Skip navigation
All Places > In the News > Blog > 2019 > February
2019

In the News

February 2019 Previous month Next month

The Special Supplemental Food Program for Women, Infants, and Children, or WIC, was established in 1972 to provide supplemental nutritional and medical assistance for mothers and young children in low-income families. With the program currently servicing about half of all infants born in the United States, being able to process WIC payments for grocery items is a necessity for retailers.

 

eWIC cash register processing eWIC payments Source: pixabay.com

 

In this article, we’re going to look at some of the considerations involved in processing WIC payments. We’ll also investigate how you can implement the processing of eWIC payments as part of your POS system. While WIC is a federal program, each state is responsible for administering the program for their state. I’ll address the implementation and guidelines in a general fashion, but you should check with your state’s WIC program for more specific information.

 

What is eWIC and How are Payments Processed?

In the past, WIC purchases were completed using a voucher system. The voucher would specify the type and quantity of goods the bearer could purchase. The retailer was responsible for verifying that the purchase matched the voucher, and for recording the total cost on the voucher.

 

Recently, the modernization of systems has seen many states begin using electronic cards to distribute and process WIC payments. Electronic Benefit Transfer or EBT cards are automatically loaded each month, and participants can use the cards to purchase allowable items. This system is called eWIC. Participants need the card and a valid PIN to participate in the program and complete purchases.

 

Participation in WIC and POS Requirements

Retailers who want to participate in the WIC system need to be authorized, which is a process that must be completed with the state. If you are using an integrated payment system, this system needs to be certified by the USDA Food and Nutrition Service. Worldpay Mobile Market+ Select, and Mobile Market+ Register systems already have certification to process eWIC payments. 

 

An Integrated POS allows consumers to checkout with WIC and non-WIC items in the same transaction. The POS should validate WIC-approved products and compare this with the balance on the customers EBT card. When the final transaction is completed using either the EBT card, another form of payment, or a combination of both, it is the responsibility of the system to flag the EBT-eligible items in every transaction.

 

Additional requirements include:

  • No state or local taxes are to be charged on eligible items.
  • The system should accept both swiped and manually entered EBT cards.
  • The remaining balance should always be printed on the customer's paper receipt.

 

We’ll explore the types of receipts which can be generated by the POS concerning a consumer’s EBT card next.

 

Required EBT or eWIC Receipts

During the completion of an eWIC transaction, four different receipts should be available for the consumer to see.

 

  • Balance inquiry which includes the amounts, sizes, and types of foods that the household has available to purchase. The balance inquiry is not technically part of the POS transaction and should be available to consumers whether they are making a purchase or first arriving at the retailer.
  • eWIC Beginning Balance is generated at the beginning of the transaction after the consumer swipes their card and enters their PIN.
  • Proposed eWIC Redemption can be produced mid-transaction and lists the items which are approved for purchase with the eWIC card.
  • eWIC Ending Balance is generated after the transaction is completed and all forms of payment have been tendered. The receipt shows the remaining balance on the eWIC card.

 

ewic requirements

 

Determining Approved Products

Although WIC is a federal program, it’s the state agencies which administer the WIC program that are responsible for determining the types and brands of foods which are authorized for use with the program. Contact the appropriate state agency for access to the current list of approved products.

 

Implementation For EBT Balance Inquiries and Sales Transactions

The Element Express API can accept both SOAP and XML requests. We’ll be focussing on the XML request, as this is the preferred method. The requests for EBT balance inquiries and sales look almost identical, with a few key differences.

 

  • The parent object
    • Balance inquiries use EBTBalanceInquiry
    • Sales use EBTSale
  • The amount
    • Balance inquiries are completed with a $0.00 transaction amount

 

Let’s look at an example XML request and discuss a few of the critical elements.

 

<EBTBalanceInquiry xmlns="https://transaction.elementexpress.com">
    <Credentials>
        <AccountID>######</AccountID>
        <AccountToken>######</AccountToken>
        <AcceptorID>######</AcceptorID>
    </Credentials>
    <Application>
        <ApplicationID>######</ApplicationID>
        <ApplicationVersion>1.0</ApplicationVersion>
        <ApplicationName>Express.Java</ApplicationName>
    </Application>
    <Terminal>
        <TerminalID>01</TerminalID>
        <CardholderPresentCode>2</CardholderPresentCode>
        <CardInputCode>5</CardInputCode>
        <TerminalCapabilityCode>3</TerminalCapabilityCode>
        <TerminalEnvironmentCode>2</TerminalEnvironmentCode>
        <CardPresentCode>2</CardPresentCode>
        <MotoECICode>1</MotoECICode>
        <CVVPresenceCode>1</CVVPresenceCode>
    </Terminal>
    <Card>
        <CardNumber>5076800001111113</CardNumber>
        <ExpirationMonth>12</ExpirationMonth>
        <ExpirationYear>99</ExpirationYear>
        <PINBlock>1234</PINBlock>
        <KeySerialNumber>AAA</KeySerialNumber>
    </Card>
    <Transaction>
        <TransactionAmount>0</TransactionAmount>
        <MarketCode>7</MarketCode>
    </Transaction>
    <EBT>
        <EBTTypeIndex>1</EBTTypeIndex>
    </EBT>
</EBTBalanceInquiry>

Figure 1. XML Request for an EBT Balance Inquiry

 

The two elements which required modification from a typical credit card transaction were the CARD  and the EBT section. As I mentioned above, the transaction amount in the Transaction section should be set to 0 for balance inquiries.

 

EBT cards do not expire, but the API requires a value for these fields . I defaulted mine to arbitrary values, and the system didn’t appear to perform an expiration check.

 

Within the CARD section, the two fields which need to be added are the PINBlock and the KeySerialNumber. The only requirement for a consumer to use an EBT card is possession of the card and a valid PIN. It is illegal to ask for identification from the bearer, or proof that they are the person to whom the card has been assigned. The consumer’s PIN is entered into the PINBlock. The KeySerialNumber is a DUKPT key  which is used for encryption within the EBT system. This key is generated for each transaction and is required by the EBT system.

 

The EBT only has one required field. EBTTypeIndex references an ENUM of EBT types within the Element Express API .

 

Learning More

For more information on the Element Express API, and how you can use it to manage your eWIC or EBT transactions, you can visit the Vantiv Developer Portal. You can also reach out to a Worldpay representative here.

 

About the Author:

Mike Mackrory is a Global citizen who has settled down in the Pacific Northwest - for now.  By day he works as a Lead Engineer on a DevOps team and by night he writes, consults on several web-based projects and runs a marginally successful eBay sticker business.  When he's not tapping on the keys, he can be found hiking, fishing and exploring both the urban and the rural landscape with his kids.  Always happy to help out another developer, he has a definite preference for helping those who bring gifts of gourmet donuts, craft beer and/or Single-malt Scotch.

Is a coding bootcamp worth it?

 

Coding bootcamps have become an increasingly popular way of learning to program. Since the first bootcamp, Code Academy, debuted in 2011, the total number of coding bootcamps has climbed to more than 95 — and that’s only including the full-time options.

 

Most coding bootcamps cost a fair bit of money and require a significant time commitment. That raises the question: Are they worth it? And the answer is: sometimes. Keep reading for tips on determining whether to participate in a coding bootcamp.

 

What is a coding bootcamp?

 

A coding bootcamp is any type of educational program designed to teach aspiring developers how to program in a relatively short period of time.

 

The goal is rarely to teach complete development skills. Instead, they usually focus on communicating the core competencies required to allow someone who has never coded before to gain the basic level of knowledge required to write working code, and to self-teach individuals more advanced programming topics and other programming languages.

 

Coding bootcamps vary considerably in terms of how long they take, how they are organized and which learning strategies they adopt. Some operate totally online, some in brick-and-mortar settings, and some as a combination of the two. Some bootcamps are overseen by traditional higher-education institutions, while others are run by independent companies. Some are not-for-profit, while others are out to make a buck.

 

Should you take a coding bootcamp?

 

Bootcamps are certainly not the only way to learn to code. They’re also not necessarily the fastest, cheapest or most effective way. Whether or not a coding bootcamp is the best fit for you depends on the following factors.

 

How many coding languages do you currently know?

 

As noted above, most coding bootcamps cater to people who have very little or no programming skills. A few, such as Hack Reactor, aim to provide more skills to people already familiar with coding, but they are the exception.

 

Thus, if you’re a CS major who already knows how to write code, or you do basic programming in your job, a bootcamp is probably not going to help you much. On the other hand, if you have no idea how to code and want to learn the fundamentals quickly, you’re a model candidate for a coding bootcamp.

 

Do you have spare time and money?

 

Is a coding bootcamp worth it?

 

The cost of a coding bootcamp (in terms of both money and time) is an obvious factor to consider, but it’s also an essential one. Bootcamps will take up at least several weeks of your life — time that you could spend making money — and the average cost for a full-time bootcamp is more than $11,000, according to Course Report. (That said, some bootcamps, such as General Assembly and C4Q's Access Code, take a cut of your salary after you graduate, which could mean that you end up paying more overall, but you avoid a steep upfront cost.)

 

Only you can decide whether these costs are affordable and acceptable for you. Before making a choice, however, you may wish to keep in mind that post-bootcamp salaries are not as high as you might think; they average only around $65,000. That’s not a bad salary if you’re young and don’t have other educational debt to contend with. But it also means that a coding bootcamp is not the instant on-ramp to a six-figure salary that some folks imagine it to be.

 

Which type of job do you want?

 

Another money-related factor worth bearing in mind is that having a coding bootcamp on your résumé will prove much more beneficial for getting some jobs as opposed to others. If your goal is to work for a large, conservative corporation, the HR gatekeepers you’ll likely need to get past in order to land an interview may not even know what a coding bootcamp is. They may assume that only people with traditional computer-science educations are fit to work in jobs that require programming skills.

 

If, on the other hand, you hope to work for a tech startup, your potential employer is likelier to understand the value of your bootcamp education. Similarly, if you already have a job but want to add programming chops to your résumé in order to seek a promotion, a coding bootcamp can help you to do that effectively, because you’ll be in a position to explain to your bosses what you are doing in the bootcamp and why, if they don’t already have an understanding. (Of course, they’ll have to be comfortable with you attending a bootcamp while employed.)

 

Which programming languages do you want to learn?

 

Most coding bootcamps focus on teaching popular, general-purpose programming languages, like Python, Java or (in some cases) C.

 

That’s great if you want to learn to code in simple, widely used languages. If, on the other hand, you need to learn a less common, special-purpose language (like Fortran, for example) a bootcamp will prove less useful. It might give you the foundation you need to teach yourself obscure programming languages, but it won’t directly lead to the knowledge you are seeking.

 

Do you need to learn more than coding?

 

An important thing to understand about coding bootcamps is that most of them focus on teaching people to code in the narrow sense. (In other words, they teach programming.)

 

What they don’t generally teach is system administration, how to deploy applications, how to test software, and so on. Those are all tasks closely associated with programming. They are important in many IT careers, and because they often involve writing code in one way or another, even if it’s just light scripting, some people might consider them to be forms of coding. But they are not the things you will typically learn at a coding bootcamp.

 

If you seek a broader IT skillset, you may need to pursue more traditional forms of technical education, or at least take a DevOps course.

 

Conclusion

 

Coding bootcamps are a great resource. For many folks, they are a fast and cost-effective way to learn programming and achieve new career goals. But it’s important to keep in mind that they are not the best fit for every person or circumstance. Before enrolling, do a cost-benefit analysis to determine if a coding bootcamp is the best way to achieve your end-goals, whatever they happen to be.

Want to raise my blood pressure? Waste my time. My nervous system reacts negatively to inefficiency in part because I can never get back the time that I’ve lost. If waste gives you the heebie-jeebies, then you’ll love 2 Second Lean – How to Grow People and Build a Lean Culture by business owner Paul Akers. 2 Second Lean was recommended to me by a highly efficient Worldpay software developer, and the book delivered on its promise to offer guidance to leaders of any size organization.

 

Below are what I found to be the most insightful excerpts from the book. For time-saving tips in video format, go to www.fastcap.com, click on the “Video” tab, and then click on “Lean Videos.”

 

  1. Two foundational principles of Lean thinking: eliminating waste and continuous improvement.
  2. Lean thinking presumes that everything can be improved continuously, without end.
  3. Finding the waste component is not a burden, it’s a game — a giant scavenger hunt.
  4. It’s not just about making everything faster, but about improving the quality of everything you do.
  5. Lean is the art of subtraction, not addition.
  6. Lean is about fixing what bugs you.
  7. Toyota was obsessed with building a culture through teaching and training its people.
  8. My goal was to create a culture of the best problem-solvers in the world. So we incorporated into our morning meeting a bit of reading out loud from great books. We are introducing our employees to world-class ideas and innovative leaders in the business world.
  9. The number one way people learn is by making mistakes. If you rob your culture of this experience, you will rob yourself of the boundless innovations that could await you.
  10. Chase waste like your dog chases a cat.
  11. Money suffocates creativity. When money is no object, we abdicate our most powerful resource: our ideas. It just gets too easy to throw money at problems.
  12. Lean is about planning, doing, checking, reevaluating, and improving everything endlessly.
  13. Lean is not an austerity program. Lean is eliminating non-value-added activity.
  14. Pointing fingers at someone else is not a kind thing to do and is definitely not as productive as solving your own problems.
  15. We are very deliberate in the way we hire people. We look for two characteristics – people who are humble and curious.
  16. Lean is hard work that makes everything easy.
  17. We do millions of dollars more in business with a similar size crew and we never work overtime. That is the difference between making continuous improvement a priority and doing it when it is convenient. Improving first not only gives you the improvement, it lightens the load and allows you to keep up with accelerating demand.
  18. Any time you train an individual intensely, you dramatically enhance their ability to perform a job consistently — significantly more so than those people who are only moderately or occasionally trained.
  19. You should not just focus on removing a small amount of waste from a particular step, because that step, in and of itself, might be waste.
  20. Our goal is for everything to be struggle-free – or to have zero struggle in every activity.
  21. The sign of a mature culture is being comfortable asking the questions, “What is it that I need to improve? Where is my waste? What do you see?”

 

 

For more On the Edge content, please visit the Worldpay Partner Advantage website.

 

Jim Roddy is a Reseller & ISV Business Advisor for Worldpay’s PaymentsEdge Advisory Services. He has been active in the POS channel since 1998, including 11 years as the President of Business Solutions Magazine, six years as a Retail Solutions Providers Association (RSPA) board member, and one term as RSPA Chairman of the Board. Jim is regularly requested to speak at industry conferences and he is author of Hire Like You Just Beat Cancer and On The Edge with Jim Roddy.

 

One thing that you learn (the hard way, sometimes) as a developer is that the amount of time and effort you invest in writing an application does not necessarily correlate closely with the amount of functionality you actually build. That’s because there are often tools and resources available that can substantially shorten the time it takes you to achieve a desired programming goal.

 

One prime example of such tools is a Software Development Kit, or SDK. If SDKs don’t feature prominently in your programmer’s toolset, you may be missing out on important opportunities to get more programming done in less time.

 

Let’s take a look at what SDKs do and how they can benefit developers.

 

What Is an SDK?

 

In a nutshell, an SDK is any type of toolset designed to simplify development for a particular platform, or sometimes even a specific application.

 

In other words, SDKs provide resources that make it faster and easier to implement functionality that you’d otherwise have to build from scratch.

 

SDKs can take many forms. It’s common for them to include APIs (in fact, it’s so common that some people use the terms SDK and API interchangeably, though this is somewhat misleading), but SDKs can include more than APIs. They might consist simply of software libraries that make programming faster. They could also include analytics or debugging tools designed to help you build and manage an application within a specific type of environment. They may even include integrations that make it possible to communicate directly with hardware from within an application, without having to build the requisite calls yourself.

 

 

If you like analogies, think of an SDK this way: SDKs are like IKEA furniture packages. They come with many preconfigured components, as well as documentation, that make it possible to build something (a piece of furniture, or a software application) quickly. Sure, you could always go cut down a tree, hew the wood and then use it to build a bedframe by hand. But almost no one does that, because there are much easier and faster solutions available.

 

Why Use an SDK?

 

The most obvious benefit of SDKs is that they save developers time. Instead of reinventing the wheel by creating functionality that someone else has already built into an SDK, programmers can take advantage of pre-built libraries, APIs and other tools that come packaged within SDKs.

 

However, faster and easier development is not the only reason to use an SDK. Consider these other advantages:

 

  • The functionality that you get inside an SDK is often thoroughly vetted — in many cases, by the experts who manage the platform for which you’re building your app. Thus, SDK code is more reliable, generally speaking, than code you’d build yourself.
  • For similar reasons, an SDK can help you to keep your application more secure and more up-to-date, since the functionality that you implement via an SDK often comes from a trusted central source. (Keep in mind that using an SDK does not give you license to ignore potential security vulnerabilities — ultimately, you still need to own security in any app you build — but an SDK can help to reduce some security risks.)
  • SDKs often make it easier to take advantage of optimizations, such as libraries that have been optimized for a specific type of environment or hardware device. In this way, SDKs can lead to better overall app performance.

 

SDK Example: IPC SDK

To place SDKs into a real-world context, let’s take a quick look at one SDK, the Worldpay Total IPC SDK. The IPC SDK is designed to make it easy to build Windows or iOS mobile apps that use card readers and connect to Worldpay’s Integrated Payments Hub for payments processing.

 

Depending on which platform you are developing for (Windows or iOS) you would use the IPC SDK somewhat differently. (In that sense, it’s a good example of how SDKs are not a single specific thing; they’re a broad category of developer toolsets, which can be implemented in many ways.) On Windows, the SDK provides a service that in turn manages the card reader on your device. In contrast, on iOS, the SDK is available as a software library.

 

No matter how you access the IPC SDK or which operating system you’re developing for, however, you get the same core functionality. The SDK manages application access to your users’ devices’ card readers, without you having to worry about drivers or the other technical tedium that you typically have to deal with when you’re building an application that interacts with a specialized hardware device. Plus, the IPC SDK avoids passing data from payment cards through your application, which makes it possible to avoid EMV certification testing.

 

You can get started with the IPC SDK for Windows and iOS by simply downloading the requisite code from GitHub.

Conclusion

 

If you’re a developer, you could live life the hard way and write everything from scratch yourself. But there is rarely a reward for doing things the hard way in the world of programming (at least when you’re building software that people are actually going to use). On the contrary, the developers who achieve the greatest rewards are those who take advantage of tools like SDKs for building applications more quickly, and with fewer performance or security headaches.