Testing Barcode Scan Flow in Staging

Cash Onramp Barcode Testing Guide

Overview

This guide provides step-by-step instructions for partners to test the complete barcode scanning flow for cash onramp transactions in the staging environment. The flow simulates the entire process from barcode generation to final authorization using Green Dot's sandbox APIs.


Step 1: Generate Order Template

For white label API partners, partners must first generate a barcode by calling the Generate Order Template endpoint.

For partners integrating and testing the onramp widget, you can find the "Generate Order Template endpoint" being hit in your dev tools once you land on the barcode page. You can use the same steps as below once you locate the response of that endpoint in your dev tools.

Endpoint Documentation: https://docs.coinme.com/reference/generate-order-template#/

Response

Upon successful response, save the value from the transactionProviderRef key. This value will be used in all subsequent API calls.

Example Response:

{
  "transactionProviderRef": "830324007540008113355271858313",
  ...
}
⚠️

Important: Store the transactionProviderRef value - you'll need it for steps 5 and 6.


Step 2: Save Transaction Provider Reference

Ensure you have saved the transactionProviderRef value from Step 1 before proceeding.


Step 3: Prepare for Barcode Scan Simulation

The following steps (4-6) use Green Dot's sandbox APIs to simulate scanning the barcode. All parameters can be kept the same as the sample CURL commands provided, except where specifically noted.


Step 4: Authorize Endpoint

Call the authorize endpoint to begin the barcode scan simulation.

Endpoint: POST https://caas-staging.coinme.com/services/authorize

Request

curl --location --request POST 'https://caas-staging.coinme.com/services/authorize' \
--header 'User-Agent: api-postman' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic [YOUR AUTH TOKEN HERE]' \
--header 'Cookie: __cf_bm=yPu5JKOOkVRQ8naxhADTChfIMSnyPrfvELyA5tCahRc-1765234455-1.0.1.1-3i3QCBYqrO7LAafrT1QV4AB1o4pWBJgYStgf9GBsx3IDoKngapd16Xk5o_bV6DnJ3jnVfwsZjIzzS3CvrbAb6N3wkddt4VH0BhVjU6eUEXs'

Notes

  • All parameters can be kept the same as the sample CURL
  • This step initiates the authorization process

Step 5: Auth_New Endpoint (Barcode Scan Simulation)

This endpoint simulates the actual barcode scan.

Endpoint: POST https://caas-staging.coinme.com/greendot/ws

Required Modifications

1. Amount Value

Ensure the amount in the request body matches the actual transaction amount:

<d4p1:Amount>30</d4p1:Amount>

2. Account Number (2 locations)

Replace the AccountNumber value with the transactionProviderRef saved from Step 1. This value appears in TWO places in the request body:

<d4p1:AccountNumber>830324007540008113355271858313</d4p1:AccountNumber>
⚠️

Important: Both AccountNumber fields must be updated with your transactionProviderRef value.

Request

curl --location 'https://caas-staging.coinme.com/greendot/ws' \
--header 'Content-Type: text/xml' \
--header 'Authorization: Bearer [YOUR AUTH TOKEN HERE]' \
--header 'Cookie: __cf_bm=9TtwajUJ93EombDm6s5Pw1GeXqCHH8mOLjaA7GosuZI-1765225374-1.0.1.1-72Ht8PpVbqMEiERHPkA7cOaSbsVJaj1DQ9Aggcri3o8gn_tSgzOWTNyLlbrztuWQjO_zPf5DCt6ilEnwc.BWcJSHqSDM62m_6rgUeof27rg' \
--data '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header>
        <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://greendotcorp.com/WebServices/Corporate/GDNPartnerAPI/IGDNPartnerAPI/Auth</Action>
        <ActivityId CorrelationId="d9ece891-f08c-4dd6-8fa0-fbb880a040ac" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">00000000-0000-0000-0000-000000000000</ActivityId>
    </s:Header>
    <s:Body>
        <Auth xmlns="http://greendotcorp.com/WebServices/Corporate/GDNPartnerAPI/">
            <request xmlns:d4p1="https://partners.greendotcorp.com/GDCPartners/GDCWS_GDNPartnerAPI/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <d4p1:Audit i:nil="true"/>
                <d4p1:Authentication>
                    <d4p1:PartnerCode>GreenDot</d4p1:PartnerCode>
                    <d4p1:UserName>coinme-gd-soap-client</d4p1:UserName>
                    <d4p1:Password>oTa1vSOZEq81mRQ3gI4pdOKE9IZE9aJS</d4p1:Password>
                </d4p1:Authentication>
                <d4p1:Channel>5</d4p1:Channel>
                <d4p1:RequestDateTime>2025-04-24T09:54:10.6774481+08:00</d4p1:RequestDateTime>
                <d4p1:RequestID>Test0060000000000022497881</d4p1:RequestID>
                <d4p1:Version>2.0.0</d4p1:Version>
                <d4p1:Amount>30</d4p1:Amount>
                <d4p1:AuthLifeSpan>210</d4p1:AuthLifeSpan>
                <d4p1:Customer i:nil="true"/>
                <d4p1:Description>test ClipMoney Auth</d4p1:Description>
                <d4p1:DictionaryEntry xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
                    <d5p1:KeyValueOfstringstring>
                        <d5p1:Key>Partner</d5p1:Key>
                        <d5p1:Value>Walmart</d5p1:Value>
                    </d5p1:KeyValueOfstringstring>
                    <d5p1:KeyValueOfstringstring>
                        <d5p1:Key>StoreNumber</d5p1:Key>
                        <d5p1:Value>4317</d5p1:Value>
                    </d5p1:KeyValueOfstringstring>
                    <d5p1:KeyValueOfstringstring>
                        <d5p1:Key>StoreState</d5p1:Key>
                        <d5p1:Value>CA</d5p1:Value>
                    </d5p1:KeyValueOfstringstring>
                    <d5p1:KeyValueOfstringstring>
                        <d5p1:Key>BarcodePartnerRequestId</d5p1:Key>
                        <d5p1:Value>250417030213342</d5p1:Value>
                    </d5p1:KeyValueOfstringstring>
                    <d5p1:KeyValueOfstringstring>
                        <d5p1:Key>StoreName</d5p1:Key>
                        <d5p1:Value>Walmart</d5p1:Value>
                    </d5p1:KeyValueOfstringstring>
                    <d5p1:KeyValueOfstringstring>
                        <d5p1:Key>StoreCity</d5p1:Key>
                        <d5p1:Value>Tehachapi</d5p1:Value>
                    </d5p1:KeyValueOfstringstring>
                </d4p1:DictionaryEntry>
                <d4p1:PartialApproval>false</d4p1:PartialApproval>
                <d4p1:PaymentType>7</d4p1:PaymentType>
                <d4p1:ProgramNumber>Coinme-bc395</d4p1:ProgramNumber>
                <d4p1:SourceAccount>
                    <d4p1:AccountNumber>830324007540008113355271858313</d4p1:AccountNumber>
                    <d4p1:AccountReferenceNumber>63294764721</d4p1:AccountReferenceNumber>
                    <d4p1:AccountType>7</d4p1:AccountType>
                    <d4p1:SubAccountNumber/>
                    <d4p1:SubAccountReferenceNumber i:nil="true"/>
                </d4p1:SourceAccount>
                <d4p1:TargetAccount>
                    <d4p1:AccountNumber>830324007540008113355271858313</d4p1:AccountNumber>
                    <d4p1:AccountReferenceNumber/>
                    <d4p1:AccountType>3</d4p1:AccountType>
                    <d4p1:SubAccountNumber/>
                    <d4p1:SubAccountReferenceNumber i:nil="true"/>
                </d4p1:TargetAccount>
                <d4p1:TransactionReferenceNumber i:nil="true"/>
            </request>
        </Auth>
    </s:Body>
</s:Envelope>'

Success Response

A successful API call will return:

<ns2:ResponseCode>00</ns2:ResponseCode>

Step 6: Auth_Commit Endpoint (Finalize Barcode Scan)

This endpoint commits and finalizes the barcode scan.

Endpoint: POST https://caas-staging.coinme.com/greendot/ws

Required Modifications

1. Account Number

Use the transactionProviderRef saved from Step 1:

<d4p1:AccountNumber>830324007540008113355271858313</d4p1:AccountNumber>

2. Amount Value

Ensure the amount matches what was used in the actual transaction:

<d4p1:Amount>30</d4p1:Amount>

Request

curl --location 'https://caas-staging.coinme.com/greendot/ws' \
--header 'Content-Type: text/xml' \
--header 'Authorization: Bearer [YOUR AUTH TOKEN HERE]' \
--header 'Cookie: __cf_bm=9TtwajUJ93EombDm6s5Pw1GeXqCHH8mOLjaA7GosuZI-1765225374-1.0.1.1-72Ht8PpVbqMEiERHPkA7cOaSbsVJaj1DQ9Aggcri3o8gn_tSgzOWTNyLlbrztuWQjO_zPf5DCt6ilEnwc.BWcJSHqSDM62m_6rgUeof27rg' \
--data '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header>
        <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://greendotcorp.com/WebServices/Corporate/GDNPartnerAPI/IGDNPartnerAPI/AuthCommit</Action>
        <ActivityId CorrelationId="35f72dbd-4df7-4901-bd74-ac523a9eff68" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">00000000-0000-0000-0000-000000000000</ActivityId>
    </s:Header>
    <s:Body>
        <AuthCommit xmlns="http://greendotcorp.com/WebServices/Corporate/GDNPartnerAPI/">
            <request xmlns:d4p1="https://partners.greendotcorp.com/GDCPartners/GDCWS_GDNPartnerAPI/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <d4p1:Audit i:nil="true" />
                <d4p1:Authentication>
                    <d4p1:PartnerCode>GreenDot</d4p1:PartnerCode>
                    <d4p1:UserName>coinme-gd-soap-client</d4p1:UserName>
                    <d4p1:Password>oTa1vSOZEq81mRQ3gI4pdOKE9IZE9aJS</d4p1:Password>
                </d4p1:Authentication>
                <d4p1:Channel>5</d4p1:Channel>
                <d4p1:RequestDateTime>2025-06-24T08:18:15.6022211Z</d4p1:RequestDateTime>
                <d4p1:RequestID>Test0060000000000022497881</d4p1:RequestID>
                <d4p1:Version>2.0.0</d4p1:Version>
                <d4p1:Amount>30</d4p1:Amount>
                <d4p1:Customer i:nil="true" />
                <d4p1:Description>Testing</d4p1:Description>
                <d4p1:DictionaryEntry xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
                <d4p1:OriginalConfirmationID>1257724524217114624</d4p1:OriginalConfirmationID>
                <d4p1:PartialApproval>false</d4p1:PartialApproval>
                <d4p1:PaymentType>7</d4p1:PaymentType>
                <d4p1:ProgramNumber>Coinme-BC395</d4p1:ProgramNumber>
                <d4p1:SourceAccount>
                    <d4p1:AccountNumber>830324007540008113355271858313</d4p1:AccountNumber>
                    <d4p1:AccountReferenceNumber i:nil="true" />
                    <d4p1:AccountType>7</d4p1:AccountType>
                    <d4p1:SubAccountNumber i:nil="true" />
                    <d4p1:SubAccountReferenceNumber i:nil="true" />
                </d4p1:SourceAccount>
                <d4p1:TargetAccount>
                    <d4p1:AccountNumber>830324007540008113355271858313</d4p1:AccountNumber>
                    <d4p1:AccountReferenceNumber i:nil="true" />
                    <d4p1:AccountType>3</d4p1:AccountType>
                    <d4p1:SubAccountNumber i:nil="true" />
                    <d4p1:SubAccountReferenceNumber i:nil="true" />
                </d4p1:TargetAccount>
                <d4p1:TransactionReferenceNumber i:nil="true" />
            </request>
        </AuthCommit>
    </s:Body>
</s:Envelope>'

Success Response

A successful API call will return:

<ns2:ResponseCode>00</ns2:ResponseCode>

Step 7: Monitor Transaction Progress

Once Step 6 is completed successfully:

✅ The barcode has been scanned successfully
✅ The crypto send should be initiated automatically

Next Steps

Partners should monitor for blockchain broadcasting webhooks to track the transaction progress through to finality.


Summary Checklist

  • Called Generate Order Template endpoint
  • Saved transactionProviderRef value
  • Called Authorize endpoint
  • Called Auth_New endpoint with correct transactionProviderRef and amount
  • Called Auth_Commit endpoint with correct transactionProviderRef and amount
  • Confirmed both Auth_New and Auth_Commit returned ResponseCode 00
  • Monitoring blockchain broadcasting webhooks for transaction finality