How to Integrate the Widget
Coinme Partner Integration Documentation
TL;DR — Partner Integration Flow
- Fetch and aggregate configuration details to know supported assets, payment methods, limits, and regions.
- Get an informational quote to show users estimated rates/fees before launching the widget.
- Create a widget session via API to receive a hosted
widgetUrl. - Open the widget (redirect or WebView) and let Coinme collect payment/KYC safely.
- Handle webhooks for status updates and fetch transaction details for reconciliation.
0. Step 0 - Generate Bearer Token
Partners need to hit the /services/authorize endpoint to obtain a bearer token for authenticating subsequent API calls.
1. Step 1 — Fetch configuration
Endpoints:
- GET /services/cryptoChains - Supported crypto assets - Docs
- GET /services/locationlicensing - Supported jurisdictions - Docs
- Transaction Limits and Payment Methods - Coinme Cash (Greendot cash-crypto buy) and ReadyCode ATM (Allpoint crypto-cash sells) - Transaction limits found here to be mapped
Purpose
Create a partner mapping across valid fiat currencies, payment methods, assets, transactional limits, and regional restrictions.
Sample JSON using all linked endpoints and docs to create holistic mapping (Partner creates mapping):
{
"paymentMethods": [
{
"id": "CARD",
"label": "Debit Card",
"type": "card",
"availability": ["USD"],
"supportedCountry": ["US"],
"onrampAvailable": true,
"offrampAvailable": false
},
{
"id": "GREENDOT",
"label": "Greendot Cash Buy",
"type": "cash",
"availability": ["USD"],
"supportedCountry": ["US"],
"onrampAvailable": true,
"offrampAvailable": false
}
],
"assets": [
{
"code": "BTC",
"name": "Bitcoin",
"decimals": 8,
"supportedChains": ["BTC"]
},
{
"code": "ETH",
"name": "Ethereum",
"decimals": 18,
"supportedChains": ["ETH"]
}
],
"transactionalLimits": {
"byPaymentMethod": [
{
"paymentMethodId": "CARD",
"currency": "USD",
"min": 5,
"max": 15000
},
{
"paymentMethodId": "GREENDOT",
"currency": "USD",
"min": 20,
"max": 2000
}
]
},
"regions": {
"supportedCountries": ["US"],
"stateRestrictions": {
"US": {
"blockedStates": []
}
}
}
}paymentMethod: Array showing all supported payment methods and jurisdictions where the payment method can be used
assets: Array showing all supported cryptocurrencies and their corresponding chains
transactionalLimits: The transaction limits of using a specific payment method
regions: Supported countries/states
2. Step 2 — Show an informational quote
Endpoint: POST /services/cryptoquote/informative
Purpose
Provide a non-binding estimate for a given amount, payment method, and asset. Useful for pre‑widget pricing and transparency.
Request Example:
curl --location 'https://caas-staging.coinme.com/services/cryptoquote/informative' \
--header 'Authorization: Bearer <YOUR_TOKEN>' \
--header 'User-Agent: YourAppName/1.0' \
--header 'Content-Type: application/json' \
--data '{
"debitCurrencyCode": "USD",
"creditCurrencyCode": "BTC",
"amountValue": 200,
"amountCurrencyCode": "USD"
}'Response:
{
"data": {
"creditCurrencyUnitPrice": "0.00000850",
"creditCurrencyUnitPriceCode": "BTC/USD",
"debitCurrencyUnitPrice": "117658.01",
"debitCurrencyUnitPriceCode": "USD/BTC",
"creditCurrencyAmount": "0.00170000",
"creditCurrencyCode": "BTC",
"debitCurrencyAmount": "203.80",
"debitCurrencyCode": "USD",
"totalFees": "3.80",
"feeCurrency": "USD",
"feesMap": {
"exchangeFee": "3.80"
},
"spread": "2.18",
"spreadCurrencyCode": "USD",
"chain": "BTC"
},
"errorResponse": null
}Full docs around Informational Quotes endpoint
3. Step 3 — Create a widget session (generate a hosted URL)
Endpoint: POST /services/widget
Purpose
Creates a widget session and returns a hosted widgetUrl you can open in a browser/WebView.
Widget gets loaded with params set after generating hosted URL. Each URL is valid to be used within 30 minutes
Request:
curl --location 'https://caas-staging.coinme.com/services/widget' \
--header 'Authorization: Bearer <your_token>' \
--header 'User-Agent: partnerapi' \
--header 'Content-Type: application/json'Response:
{
"widgetUrl": "https://caas-staging.coinme.com/widget/{rampInstanceToken}",
"expiresAt": "2025-08-18T16:15:00Z"
}Body Parameters that the widget supports:
| Parameter | Type | Required? (Y/N) | Description |
|---|---|---|---|
| sourceAmount | Number | N | Source amount (fiat for onramps, crypto for offramps) |
| sourceCurrency | String | N | Source currency (fiat for onramps, crypto for offramps) |
| sourceAmountLock | Boolean | N | Ability to lock source amount in widget |
| sourceCurrencyLock | Boolean | N | Ability to lock source currency in widget |
| destinationAmount | Number | N | Destination amount (crypto for onramps, fiat for offramps) |
| destinationCurrency | String | Y | Destination currency (crypto for onramps, fiat for offramps) |
| destinationAmountLock | Boolean | N | Ability to lock destination amount in widget |
| destinationCurrencyLock | Boolean | N | Ability to lock destination currency in widget |
| countryCode | String | N | End user 2 letter country code (eg. "US") |
| long | String | N | Longitude of the user. Used for setting up cash location map in widget |
| lat | String | N | Latitude of the user. Used for setting up cash location map in widget |
| city | String | N | City of user |
| state | String | N | State of user |
| zipCode | String | N | Zip code of user |
| streetAddress | String | N | Street address of user |
| paymentMethod | String | N | Desired Payment method to be used |
| paymentMethodLock | Boolean | N | Locks payment method set in widget if paymentMethod is provided |
| walletAddress | String | Y | End user wallet address crypto gets sent to |
| walletMemo | String | N | Wallet memo if required by the chain being transacted on |
| walletLock | Boolean | N | Ability to lock wallet address + memo(if used) in widget |
| externalSessionId | String | N | Partner-generated ID for a single widget session |
| redirectUrl | String | N | Page to redirect user to after transaction has completed (onramp- barcode scanned/fiat given in store and crypto send processing, offramp-cash code generated and presented to user. Coinme appends "transactionId" and "status" as additional query params to the redirectUrl |
| redirectUrlButtonLabel | String | N | Customize button label that triggers redirectUrl on specified pages |
| language | String | N | Specifies language set in widget for localization purposes |
| theme | String | N | Dark or light mode. |
4. Step 4 — Receive webhooks & fetch transaction details (reconciliation)
Coinme sends webhooks during the transaction lifecycle. Use them to update UI and trigger back‑office flows, then fetch the canonical record using the GET Transaction history for reconciliation.
4.1 Webhooks
For the scope of the widget, Coinme emits the following transactional webhooks:
| Event | Description |
|---|---|
| kyc-prove.onboarding.completed | Tracks once a user signs up and successfully passes KYC. |
| kyc-prove.onboarding.failed | Tracks once a user signs up, but fails KYC. |
| orchestrator.auth-state.changed | Tracks when the auth state of a user interacting with orchestrator changes (I.e. When the user logs into the widget) |
| greendot.location.quote-confirmed | Tracks when a user clicks "Find A Location" button after configuring their transaction quote and confirms quote |
| discover.barcode.location-selected | Tracks when a user requests barcode generation by clicking the "Generate Barcode" button on a location card |
| greendot.barcode.generation-succeeded | Tracks successful barcode generation after location selected webhook resolves |
| Order Template Created | Tracks the creation of the Order Template to be used in the store. Gets triggered in parallel with greendot.barcode.generation-succeeded |
| greendot.barcode.generation-failed | Tracks failed barcode generation attempts after location selected webhook resolves |
| greendot.barcode.displayed | When the user taps on “tap to display barcode” & shows the barcode |
| Order Template Expired | Triggers if the order template expires. Sent after 24H after order template creation if not used. |
| Order Template Consumed | Event triggers once the barcode gets scanned and is consumed |
| Order Fulfilled | Triggered when payment provider has approved and processed the fiat leg of the transaction. |
| BLOCKCHAIN_ACCEPTED | Triggered when the transaction is broadcast to the blockchain. The webhook body includes the txHash. |
| Order Completed | Triggered once order is finalized and completed. Transaction successfully completed and crypto sent to user. |
| Order Failed | Triggered if the transaction is canceled, expired, rejected, or otherwise fails in a terminal state |
Webhook Sample Body:
{
"event": "kyc-prove.onboarding.completed",
"event_id": "019b37a5-b9c0-751f-9d93-291167d48be4",
"timestamp": "2025-12-19T17:26:06.943000Z",
"customer_id": "1319354818066124800",
"distinct_id": "0199ba6c-f4bc-78fa-8c28-110aaedac08a",
"customer_email": "[email protected]",
"externalSessionId": "coinmetest_2025_12_18_091"
}{
"event": "kyc-prove.onboarding.failed",
"event_id": "019b3566-58bf-7ce5-8f11-abdfd0387bf4",
"timestamp": "2025-12-19T06:57:38.708000Z",
"error_code": "234-400-103-007",
"customer_id": "1319195872818892800",
"distinct_id": "019b0e86-7395-7c17-9ed0-1adafb44ee37",
"error_message": "It appears that we are unable to verify your information. To continue to use your Coinme account, please contact us [cslink].<br/><br/>We are looking forward to continue to serve you!",
"business_error": "locked CS investigation",
"customer_email": "[email protected]",
"externalSessionId": "2fd7da84-6b89-4344-8a32-0ecd075f2485",
"technical_message": "{\"errorResponse\":{\"timestamp\":\"2025-12-19T06:57:38.497774725Z\",\"httpStatus\":200,\"errorData\":[{\"errorCode\":\"234-400-103-007\",\"message\":\"We are unable to upgrade your account at this time\"}],\"path\":\"POST /users/verify\"}}"
}{
"event": "orchestrator.auth-state.changed",
"event_id": "019aeb09-6bb3-7758-b5d3-a0f41c7f2084",
"timestamp": "2025-12-04T20:24:14.875Z",
"customer_id": "1312867328673189888",
"distinct_id": "019ae5ab-187f-7e94-a776-11df94edb2f2",
"customer_email": "[email protected]",
"externalSessionId": "abc123"
}{
"fees": {
"feeCurrency": "USD",
"feesMap": {
"blockchainFee": "0.15",
"exchangeFee": "0.30"
},
"spread": "0.00",
"spreadCurrencyCode": "USD",
"totalFees": "0.45"
},
"debit": {
"amount": "20.00",
"currencyCode": "USD",
"unitPrice": "1.00",
"unitPriceCode": "USD/USDC"
},
"event": "greendot.location.quote-confirmed",
"credit": {
"amount": "19.550000",
"currencyCode": "USDC",
"unitPrice": "1.000000",
"unitPriceCode": "USDC/USD"
},
"event_id": "019b4716-d949-7e4f-9dd6-bf306c4a7d82",
"timestamp": "2025-12-22T17:23:58.592000Z",
"distinct_id": "0199ba6c-f4bc-78fa-8c28-110aaedac08a",
"paymentMethod": "cash",
"externalSessionId": "coinmetest_2025_12_18_098"
}{
"event": "discover.barcode.location-selected",
"geoip": {
"city": "Frisco",
"region": "Texas",
"country": "United States",
"latitude": 33.1494,
"timezone": "America/Chicago",
"continent": "North America",
"longitude": -96.828,
"postal_code": "75034",
"region_code": "TX",
"country_code": "US",
"continent_code": "NA"
},
"event_id": "019aeb09-8c8b-748a-99fc-da0599e129af",
"timestamp": "2025-12-04T20:24:23.364Z",
"distinct_id": "019ae5ab-187f-7e94-a776-11df94edb2f2",
"externalSessionId": "abc123"
"userGpsLocation": null,
"selectedLocation": {
"address": {
"city": "Colorado Springs",
"country": "USA",
"state": "CO",
"street": "455 N Circle Dr",
"zipCode": "80909"
},
"coordinates": {
"latitude": 38.838669,
"longitude": -104.7756
},
"distance": 2.486553070351944,
"distanceMetric": "mi",
"googlePlacesLink": null,
"hours": null,
"locationId": "CVS11002",
"locationName": "CVS",
"notes": null,
"provider": "GREENDOT"
}
}{
"event": "greendot.barcode.generation-succeeded",
"fees": {
"feesMap": {
"blockchainFee": "0.07"
},
"retailerCustomerFee": {
"amount": "3.95",
"currency": "USD"
}
},
"debit": {
"currencyCode": "USD",
"unitPrice": "146.55"
},
"amount": {
"currencyCode": "USD",
"value": "300"
},
"credit": {
"amount": "2.047152300",
"currencyCode": "SOL"
},
"event_id": "019aeb0a-212b-7654-9324-94072e8c131a",
"barcodeId": "1313964142118440960",
"externalSessionId": "abc123"
"timestamp": "2025-12-04T20:25:01.337Z",
"distinct_id": "019ae5ab-187f-7e94-a776-11df94edb2f2",
"paymentMethod": "cash",
"expiryTimestamp": "2025-12-11T20:24:24.623Z",
"providerBarcodeId": "830324007540008113355271474330"
}{
"id": "5c03b717-c2a7-4172-9df8-633ebcf6794a",
"type": "ORDER_TEMPLATE",
"data": {
"providerId": "828627387817136135",
"orderTemplateId": "1319369115555729408",
"orderTemplateStatus": "CREATED",
"userInputAmount": {
"amount": "30",
"currency": "USD"
}
},
"at": "2025-12-19T18:21:51Z"
}{
"event": "greendot.barcode.generation-failed",
"event_id": "019b3767-95e2-7b64-bbe1-7f1b39eb36e4",
"errorCode": "182-400-201-801",
"timestamp": "2025-12-19T16:18:14.367000Z",
"distinct_id": "0199ba6c-f4bc-78fa-8c28-110aaedac08a",
"externalSessionId": "coinmetest_2025_12_18_090"
}{
"event_id": "019aeb0e-c39d-7f60-803a-66760a80d250",
"fees": {
"feesMap": {
"blockchainFee": "8.42"
},
"retailerCustomerFee": {
"amount": "3.95",
"currency": "USD"
}
},
"debit": {
"currencyCode": "USD"
},
"event": "greendot.barcode.displayed",
"geoip": {
"city": "Frisco",
"region": "Texas",
"country": "United States",
"latitude": 33.1494,
"timezone": "America/Chicago",
"continent": "North America",
"longitude": -96.828,
"postal_code": "75034",
"region_code": "TX",
"country_code": "US",
"continent_code": "NA"
},
"amount": {
"currencyCode": "USD",
"value": "100"
},
"credit": {
"amount": "0.00103700",
"currencyCode": "BTC"
},
"barcodeId": "1313954797448204288",
"orderTemplateId": "1316433953436078080",
"externalSessionId": "abc123"
"timestamp": "2025-12-04T20:30:04.801Z",
"distinct_id": "019ae626-9783-7fa3-9725-d4b812208b68",
"paymentMethod": "cash",
"expiryTimestamp": "2025-12-11T19:47:16.753Z",
"providerBarcodeId": "830324007540008113355271470198"
}{
"id": "cca25dda-ab1d-4622-be41-6cf0e31f80f6",
"type": "ORDER_TEMPLATE",
"data": {
"providerId": "828627387817136135",
"orderTemplateId": "1319373746151231488",
"providerTransactionRef": "830324007540008113355273129546",
"orderTemplateStatus": "EXPIRED",
"userInputAmount": {
"amount": "30",
"currency": "USD"
}
},
"at": "2025-12-19T21:40:14Z"
}{
"id": "fe72997c-cba1-4666-bda2-ee2996a61bcd",
"type": "ORDER_TEMPLATE",
"data": {
"providerId": "828627387817136135",
"orderTemplateId": "1316433953436078080",
"externalSessionId": "abc123"
"providerTransactionRef": "830324007541181270006355272301",
"orderTemplateStatus": "CONSUMED",
"userInputAmount": {
"amount": "55",
"currency": "USD"
},
"errorData": null
},
"at": "2025-12-11T16:03:30Z"
}{
"id": "19f905b2-94ee-4130-96c7-67d1b7e4b086",
"type": "CAAS",
"data": {
"type": "BUY",
"providerId": "828627387817136135",
"transactionId": "1319403376555986944",
"externalSessionId": "coinmetest_2025_12_18_093",
"metadata": {
"orderStatus": "FULFILLED",
"orderTemplateId": "1319403187510317056",
"blockchainData": {
"targetWalletAddress": "0xF8E70c34D2212e556aA4f25B30Ea6C6D3DA19B2C",
"currency": "ETH",
"chain": "ETH"
}
}
},
"at": "2025-12-19T20:38:07Z"
}{
"id": "cc2d6e1b-d5a3-4fc1-8690-ec5149162ec8",
"type": "CAAS",
"data": {
"type": "BUY",
"providerId": "828627387817136135",
"transactionId": "1316435202751467520",
"externalSessionId": "abc123"
"metadata": {
"orderStatus": "BLOCKCHAIN_ACCEPTED",
"blockchainData": {
"targetWalletAddress": "0xddd5f31ccc5fbefb50760bec51b4da217a31aa6b",
"blockchainTransactionId": "0x466793e2409f499a0130610e849f5dd2ef25ca424e46573942307a72e7bf6adb",
"blockchainMemo": null,
"currency": "ETH",
"chain": "ETH"
}
},
"errorData": null
},
"at": "2025-12-11T16:03:49Z"
}{
"id": "0f89283e-dfcc-4adc-a4da-7c232e897882",
"type": "CAAS",
"data": {
"type": "BUY",
"providerId": "828627387817136135",
"transactionId": "1316435202751467520",
"externalSessionId": "abc123"
"metadata": {
"orderStatus": "COMPLETED",
"orderTemplateId": "1316433953436078080",
"blockchainData": {
"targetWalletAddress": "0xddd5f31ccc5fbefb50760bec51b4da217a31aa6b",
"blockchainTransactionId": "0x466793e2409f499a0130610e849f5dd2ef25ca424e46573942307a72e7bf6adb",
"blockchainMemo": null,
"currency": "ETH",
"chain": "ETH"
}
},
"errorData": null
},
"at": "2025-12-11T16:04:24Z"
}{
"id": "5ffaec5c-2c5b-4f93-a554-d0067595ebad",
"type": "CAAS",
"data": {
"type": "BUY",
"providerId": "828627387817136135",
"transactionId": "1316431254602780672",
"externalSessionId": "abc123",
"metadata": {
"orderStatus": "FAILED",
"orderTemplateId": "1316430777429397504",
"blockchainData": {
"targetWalletAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"blockchainMemo": null,
"currency": "BTC",
"chain": "BTC"
}
},
"errorData": {
"code": "209-005-E3",
"message": "External buy rejected by ledger"
}
},
"at": "2025-12-11T15:50:54Z"
}Webhook Body Dictionary:
{
"event": "The name of the webhook event that was triggered",
"event_id": "Unique identifier for this specific event occurrence",
"timestamp": "The date and time when the event occurred",
"customer_id": "Unique identifier for the customer in the system",
"externalSessionId": "Partner generated unique ID for a user widget session"
"distinct_id": "Analytics/tracking identifier for the user",
"customer_email": "The email address of the customer who completed onboarding"
}{
"event": "The name of the webhook event that was triggered",
"event_id": "Unique identifier for this specific event occurrence",
"timestamp": "The date and time when the event occurred",
"error_code": "Code identifying the specific type of error that occurred",
"customer_id": "Unique identifier for the customer in the system",
"externalSessionId": "Partner generated unique ID for a user widget session"
"distinct_id": "Analytics/tracking identifier for the user",
"error_message": "Error message describing why KYC failed",
"business_error": "Business-level error description",
"customer_email": "The email address of the customer who failed onboarding",
"technical_message": "Technical details about the error"
}{
"event": "The name of the webhook event that was triggered",
"event_id": "Unique identifier for this specific event occurrence",
"timestamp": "The date and time when the auth state changed",
"externalSessionId": "Partner generated unique ID for a user widget session"
"customer_id": "Unique identifier for the customer in the system",
"distinct_id": "Analytics/tracking identifier for the user",
"customer_email": "The email address of the customer "
}{
event: 'The name of the webhook event that was triggered',
"event_id": "Unique identifier for this specific event occurrence",
paymentMethod: 'The payment method selected by the user',
"externalSessionId": "Partner generated unique ID for a user widget session",
debit: { //Details about the amount being debited from the customer
amount: 'The amount being debited',
currencyCode: 'Currency code for the debit amount',
unitPrice: 'Unit price/exchange rate for the debit currency',
unitPriceCode: 'Currency code for the unit price'
},
credit: { //Details about the amount being credited to the recipient
amount: 'The amount being credited',
currencyCode: 'Currency code for the credit amount',
unitPrice: 'Unit price/exchange rate for the credit currency',
unitPriceCode: 'Currency code for the unit price'
},
fees: { //Breakdown of all fees associated with the transaction
feeCurrency: 'Currency in which fees are denominated',
totalFees: 'Total amount of all fees combined',
feesMap: 'Key-value pairs mapping fee types to their amounts',
spread: 'The spread/markup applied to the exchange rate',
spreadCurrencyCode: 'Currency code for the spread'
},
"timestamp": "The date and time when the quote was confirmed",
"distinct_id": "Analytics/tracking identifier for the user",
}{
"event": "The name of the webhook event that was triggered",
"geoip": { //Geolocation data based on IP address. Note: This object is optional and depends on whether the user accepts or denies location access via Location Services
"city": "City derived from IP geolocation",
"region": "State/region derived from IP geolocation",
"country": "Country derived from IP geolocation",
"latitude": 'Latitude coordinate from IP geolocation',
"timezone": "Timezone of the IP location",
"continent": "Continent derived from IP geolocation",
"longitude": 'Longitude coordinate from IP geolocation',
"postal_code": "Postal code derived from IP geolocation",
"region_code": "Two-letter state/region code",
"country_code": "Two-letter country code",
"continent_code": "Two-letter continent code"
},
"event_id": "Unique identifier for this specific event occurrence",
"timestamp": "The date and time when the location was selected",
"externalSessionId": "Partner generated unique ID for a user widget session"
"distinct_id": "Analytics/tracking identifier for the user",
"userGpsLocation": 'User GPS coordinates',
"selectedLocation": { //Details about the retail location selected by the user
"address": { //Physical address of the selected location
"city": "Colorado Springs",
"country": "USA",
"state": "CO",
"street": "455 N Circle Dr",
"zipCode": "80909"
},
"coordinates": { //Geographic coordinates of the location
"latitude": 38.838669,
"longitude": -104.7756
},
"distance": 'Distance from user's location to selected location',
"distanceMetric": "Unit of measurement for distance",
"googlePlacesLink": 'Link to Google Places for this location',
"hours": 'Operating hours of the location',
"locationId": "Unique identifier for the retail location",
"locationName": "Name/brand of the retail location",
"notes": 'Additional notes or information about the location',
"provider": "The cash network provider for this location"
}
}{
"event": "The name of the webhook event that was triggered",
"fees": { //Breakdown of all fees associated with the transaction
"feesMap": { //Key-value pairs mapping fee types to their amounts
"blockchainFee": "0.07"
},
"retailerCustomerFee": {
"amount": "3.95",
"currency": "USD"
}
},
"debit": { //Details about the amount being debited from the customer
"currencyCode": "USD",
"unitPrice": "146.55"
},
"amount": {
"currencyCode": "USD", //Currency code for the transaction amount
"value": "300" //The transaction amount value
},
"credit": { //Details about the cryptocurrency being credited
"amount": "2.047152300",
"currencyCode": "SOL"
},
"event_id": "Unique identifier for this specific event occurrence",
"barcodeId": "Identifier for the barcode associated with this transaction",
"externalSessionId": "Partner generated unique ID for a user widget session"
"timestamp": "The date and time when the barcode was generated",
"distinct_id": "Analytics/tracking identifier for the user",
"paymentMethod": "The payment method for the transaction",
"expiryTimestamp": "The date and time when the barcode expires",
"providerBarcodeId": "Barcode identifier from the provider"
}{
"id": "Unique identifier for this specific event occurrence",
"type": "ORDER_TEMPLATE", //The type of event that was triggered
"data": {
"providerId": "Identifier for the provider processing the transaction",
"orderTemplateId": "Identifier for the order template associated with this transaction",
"orderTemplateStatus": "CREATED", //Current status of the order template
"userInputAmount": { //The amount configured for the transaction
"amount": "30",
"currency": "USD"
}
},
"at": "The date and time when the order template was created"
}{
"event": "The name of the webhook event that was triggered",
"event_id": "Unique identifier for this specific event occurrence}",
"errorCode": "Code identifying the specific type of error that occurred during generation",
"timestamp": "The date and time when the barcode generation failed",
"externalSessionId": "Partner generated unique ID for a user widget session"
"distinct_id": "Analytics/tracking identifier for the user"
}{
"event_id": "Unique identifier for this specific event occurrence",
"fees": { //Breakdown of all fees associated with the transaction
"feesMap": {
"blockchainFee": "8.42"
},
"retailerCustomerFee": { //Fee charged by the retail location to the customer
"amount": "3.95",
"currency": "USD"
}
},
"debit": { //Details about the amount being debited from the customer
"currencyCode": "USD"
},
"event": "The name of the webhook event that was triggered",
"geoip": { //Geolocation data based on IP address. Note: This object is optional and depends on whether the user accepts or denies location access via Location Services
"city": "City derived from IP geolocation",
"region": "State/region derived from IP geolocation",
"country": "Country derived from IP geolocation",
"latitude": 'Latitude coordinate from IP geolocation',
"timezone": "Timezone of the IP location",
"continent": "Continent derived from IP geolocation",
"longitude": 'Longitude coordinate from IP geolocation',
"postal_code": "Postal code derived from IP geolocation",
"region_code": "Two-letter state/region code",
"country_code": "Two-letter country code",
"continent_code": "Two-letter continent code"
},
"amount": {//The principal transaction amount
"currencyCode": "USD",
"value": "100"
},
"credit": { //Details about the cryptocurrency being credited
"amount": "0.00103700",
"currencyCode": "BTC"
},
"barcodeId": "Identifier for the barcode associated with this transaction",
"orderTemplateId": "Identifier for the order template associated with this transaction",
"timestamp": "The date and time when the barcode was displayed",
"externalSessionId": "Partner generated unique ID for a user widget session"
"distinct_id": "Analytics/tracking identifier for the user",
"paymentMethod": "The payment method for the transaction",
"expiryTimestamp": "The date and time when the barcode expires",
"providerBarcodeId": "Barcode identifier from the provider"
}{
"id": "Unique identifier for this specific event occurrence",
"type": "ORDER_TEMPLATE", //The type of event that was triggered
"data": {
"providerId": "Identifier for the provider processing the transaction",
"orderTemplateId": "Identifier for the order template associated with this transaction",
"providerTransactionRef": "Transaction reference ID from the provider",
"orderTemplateStatus": "EXPIRED", //Current status of the order template
"userInputAmount": { //The amount configured for the transaction
"amount": "30",
"currency": "USD"
}
},
"at": "The date and time when the order template expired"
}{
"id": "Unique identifier for this specific event occurrence",
"type": "The type of event that was triggered",
"data": {
"providerId": "Identifier for the provider processing the transaction",
"orderTemplateId": "Identifier for the order template associated with this transaction",
"externalSessionId": "Partner generated unique ID for a user widget session"
"providerTransactionRef": "Transaction reference ID from the provider",
"orderTemplateStatus": "Status of the order template",
"userInputAmount": { //The amount entered/scanned at the retail location
"amount": "55",
"currency": "USD"
},
"errorData": null //Error information if the consumption failed, null if successful
},
"at": "The date and time when the barcode was scanned and consumed"
}{
"id": "Unique identifier for this specific event occurrence",
"type": "CAAS", //The type of event that was triggered
"data": {
"type": "BUY", //The transaction type
"providerId": "Identifier for the provider processing the transaction",
"transactionId": "Unique identifier for the transaction",
"externalSessionId": "Partner generated unique ID for a user widget session",
"metadata": {
"orderStatus": "FULFILLED", //Current status of the order
"orderTemplateId": "Identifier for the order template associated with this transaction",
"blockchainData": { //Blockchain-specific transaction information
"targetWalletAddress": "The destination wallet address receiving the cryptocurrency",
"currency": "Cryptocurrency being transacted",
"chain": "Blockchain network used for the transaction"
}
}
},
"at": "The date and time when the order was fulfilled"
}{
"id": "Unique identifier for this specific event occurrence",
"type": "The type of event that was triggered",
"data": {
"type": "BUY", //The transaction type
"providerId": "Identifier for the provider processing the transaction",
"transactionId": "Unique identifier for the transaction",
"externalSessionId": "Partner generated unique ID for a user widget session"
"metadata": {
"orderStatus": "Current status of the order",
"blockchainData": { //Blockchain-specific transaction information
"targetWalletAddress": "The destination wallet address receiving the cryptocurrency",
"blockchainTransactionId": "The transaction hash (txHash) on the blockchain",
"blockchainMemo": 'Memo or tag for the blockchain transaction, if required',
"currency": "Cryptocurrency being transacted",
"chain": "Blockchain network used for the transaction"
}
},
"errorData": null //Error information if the transaction failed, null if successful
},
"at": "The date and time when the transaction was broadcast to the blockchain"
}{
"id": "Unique identifier for this specific event occurrence",
"type": "The type of event that was triggered",
"data": {
"type": "BUY", //The transaction type
"providerId": "Identifier for the provider processing the transaction",
"transactionId": "Unique identifier for the transaction",
"externalSessionId": "Partner generated unique ID for a user widget session"
"metadata": {
"orderStatus": "Current status of the order",
"orderTemplateId": 'Identifier for the order template',
"blockchainData": { //Blockchain-specific transaction information
"targetWalletAddress": "The destination wallet address receiving the cryptocurrency",
"blockchainTransactionId": "The transaction hash (txHash) on the blockchain",
"blockchainMemo": 'Memo or tag for the blockchain transaction, if required',
"currency": "Cryptocurrency being transacted",
"chain": "Blockchain network used for the transaction"
}
},
"errorData": null //Error information if the transaction failed, null if successful
},
"at": "The date and time when the transaction was completed"
}{
"id": "Unique identifier for this specific event occurrence",
"type": "The type of event that was triggered",
"data": {
"type": "BUY", //The transaction type
"providerId": "Identifier for the provider processing the transaction",
"transactionId": "Unique identifier for the transaction",
"externalSessionId": "Partner generated unique ID for a user widget session"
"metadata": {
"orderStatus": "Current status of the order",
"orderTemplateId": 'Identifier for the order template',
"blockchainData": { //Blockchain-specific transaction information
"targetWalletAddress": "The destination wallet address receiving the cryptocurrency",
"blockchainMemo": 'Memo or tag for the blockchain transaction, if required',
"currency": "Cryptocurrency being transacted",
"chain": "Blockchain network used for the transaction",
}
},
"errorData": {
"code": "Error code for failure",
"message": "Human readable error message related to transaction failure"
}
},
"at": "The date and time when the transaction was failed"
}4.2 Fetch transaction details
After receiving webhooks, fetch the full transaction history for your ledger and receipts.
Reference Docs: Get Transaction History
Endpoint:
GET /services/widget/transactionhistory
Updated 6 days ago