API structures
API structures are used in the API calls to pass the structured data in and out.
- Address Structure
- Fee Structure
- Email Message Structure
- Hosted Checkout Structure
- Payment Method Structure
- Shipping Address Structure
- Payments Prefill_Info Structure
- KYC Prefill_Info Structure
- Theme Structure
- Fee Response Structure
- Hosted Checkout Response Structure
- Refund Response Structure
- Chargeback Response Structure
- Payer Response Structure
- Rbit Structure
- Receipt Line Item Structure
- Shipping Info Structure
- Account Currency Status Structure
- International Phone Number Structure
- QR Code Structure
- Payment Error Structure
- Bank Account Payment Error Structure
Rbit Structure
The rbit structure contains risk information about users, their accounts, and transactions.
Fields:
Field | Required | Type | Description |
receive_time | Yes | Integer (64 bits) | The unixtime when the data in this rbit object was first obtained. |
source | Yes | String (255 chars) | Source of the information. |
note | No | String (65535 chars) | Free form note giving more details / context about the information. Used by Risk Analysts during manual review. |
type | Yes | String (255 chars) | The type of information you are sending in the rbit (see standard type values) |
properties | Yes | Object | Key-value pair of properties for this type. The properties of the rbit object will depend on the type (see standard types and their associated properties) |
related_rbits | No | Array of rbit structures |
An array of rbits that are related to this rbit. For example, a person rbit can have address (type = "address") and social security number (type =
"tax_id") rbits associated with that person sent as related rbits.
If an rbit is primarily associated with an associated object, then it should be passed as a top-level rbit and not as a related rbit. For example, a business phone number should be passed as a top-level for the account, whereas a home phone number for one employee should be passed as a related rbit associated with the person rbit. You do not need to specify the parameters, "associated_object_type" and "associated_object_id" for rbits sent as "related rbits". |
Examples:
Rbit
{ "receive_time":1367958263, "note": "sending tax id for Wefarm company", "type":"tax_id", "source":"guidestar", "properties":{ "tax_id":"53-0196605", "tax_id_country": "US", "tax_id_type": "business" } }
Rbit (with related rbits)
{ "receive_time": 1367958263, "type": "person", "source": "user", "properties": { "name": "Bill Clerico" }, "related_rbits": [ { "receive_time": 1367958263, "type": "tax_id", "source": "user", "note": "This is the ssn user provided.", "properties": { "tax_id": "087-97-8888", "tax_id_country": "US", "tax_id_type": "personal" } }, { "receive_time": 1367958263, "type": "email", "source": "user", "properties":{ "email": "test@wepay.com" } }, { "receive_time": 1367958263, "type": "address", "source": "user", "properties":{ "address": { "address1": "380 Portage Avenue", "city": "Palo Alto", "zip": "94085", "state": "CA", "country": "US" } } }, { "receive_time": 1367958263, "type": "phone", "source": "user", "note": "This is the phone number user provided.", "properties":{ "phone": "+1-415-555-5555", "phone_type": "work" } } ] }
Receipt Line Item
Parameter | Required | Type | Description |
description | Yes | String (1024 chars) | Line item description. Could be a normal line item, a discount line item, tax, or shipping |
item_price | Yes | Decimal (64 bits) | Item price per unit |
quantity | Yes | Decimal (64 bits) | Quantity of the line items |
amount | Yes | Decimal (64 bits) | Amount (item_price x quantity) |
currency | No | String (3 chars) | The currency used, default "USD" |
project_name | No | String (1024 chars) | Name of project this item is related to. If a separate "project" rbit is provided, this should match the project name in that rbit. |
service_billing_method | No | String (255 chars) |
Standard values:
|
Example:
Receipt Line Item
{ "description": "test", "item_price": 30.0, "quantity": 10, "amount": 10.00, "currency": "USD" }
Shipping Info Structure
Parameter | Required | Type | Description |
expected_delivery_time | No | Integer (64 bit) | The timestamp when goods or services are expected to be delivered (unix seconds since Jan 1st 1970 UTC) |
shipping_time | No | Integer (64 bit) | The timestamp when goods have been shipped (unix seconds since Jan 1st 1970 UTC) |
carrier | No | String (255 chars) | The shipping carrier (USPS, FEDEX, etc) |
tracking_number | No | String (255 chars) | The tracking number for the shipping carrier |
tracking_url | No | URL | The URL for the tracking information |
actual_delivery_time | No | Integer (64 bit) | The timestamp when goods or services were actually delivered (unix seconds since Jan 1st 1970 UTC) |
Example:
Shipping Info
{ "expected_delivery_time": 1397510245, "shipping_time": 1397510245, "carrier": "USPS", "tracking_number": "YX-33333", "tracking_url": "http://www.example.com", "actual_delivery_time": 1397510245 }
Address Structure
The address structure contains information about a street address.
Fields:
Field | Type | Description |
address1 | String (60 chars) | The first line of the street address. |
address2 | String (60 chars) | The second line of the street address. |
city | String (30 chars) | The city. |
region | String (30 chars) | Must be the 2-letter US state code for US addresses. Represents subdivisions (e.g., provinces or states) for other countries. It is preferred that it contains standard the country subdivision code. |
postal_code | String (14 chars) | The postcode/zip for the address. |
country | String (2 chars) | The 2-letter ISO-3166-1 country code. |
Example:
Address:
{ "address1":"380 Portage Ave", "address2":"", "city":"Palo Alto", "region":"CA", "postal_code":"94306", "country":"US" }
Shipping Address Structure
The shipping address structure contains information about a shipping address.
Fields:
Field | Type | Description |
name | String (255 chars) | The name of the person. |
address1 | String (60 chars) | The first line of the street address. |
address2 | String (60 chars) | The second line of the street address. |
city | String (30 chars) | The city. |
region | String (30 chars) | Must be the 2-letter US state code for US addresses. Represents subdivisions (e.g., provinces or states) for other countries. It is preferred that it contains standard the country subdivision code. |
postal_code | String (14 chars) | The postcode/zip for the address. |
country | String (2 chars) | The 2-letter ISO-3166-1 country code. |
Example:
Address:
{ "name":"Bill Clerico", "address1":"380 Portage Ave", "address2":"", "city":"Palo Alto", "region":"CA", "postal_code":"94306", "country":"US" }
Hosted Checkout Structure
There are two ways to have your customers make a payment. You can have the checkout url hosted by WePay or you can use tokenization.
Send the hosted_checkout object to have the checkout url hosted by WePay.
Send either hosted_checkout (if you want the checkout url hosted by WePay) or payment_method (for tokenization) parameter.
Do not send both parameters at the same time.
Fields:
Field | Type | Description | |
redirect_uri | String (2083 chars) | The URI the payer will be redirected to after payment (if available). If you do not pass a redirect_uri, the user will see a payment confirmation page (and if you are using the iframe we will send a postMessage to the parent window indicating that the payment is complete). | |
mode | String (255 chars) | What mode the checkout will be displayed in. The options are 'iframe' or 'regular'. Choose 'iframe' if this is an iframe checkout. Mode defaults to 'regular'. | |
fallback_uri | String | The URI used to redirect the payer if 3rd party cookies are not enabled for iframes. | |
auto_capture | No | Boolean | If present and set to false, then this checkout will not progress past the state of 'authorized' until a call to /checkout/capture is made, or if 7 days pass without having called /checkout/capture, the checkout will transition to state 'cancelled'. This parameter can only be to set to false if funding_sources is constrained to accept only credit_card as a payment method. |
shipping_fee | Decimal | The amount to be charged for shipping the item. | |
require_shipping | Boolean | Default is false. If set to true then the payer will be required to enter their shipping address when paying. | |
prefill_info | Prefill Info Structure | Information about payer to pre-fill certain fields in checkout flow. | |
funding_sources | String |
What payment method to accept for this checkout. Must be sent as an array.
Options are: ["credit_card","payment_bank"] to accept both credit card and bank payments. ["credit_card"] to accept only credit card payments. ["payment_bank"] to accept only payment bank payments. For example, if only credit card is selected, customers will see option to pay by credit card when they go to the WePay hosted checkout URL; they will not be able to pay using their bank account. If funding_sources parameter is not specified, both credit card and bank account payments will be accepted in the checkout flow. Note that this must be set to just ["credit_card"] if auto_capture is set to false. |
|
theme_object | Theme Object Structure | The theme structure contains information to provide custom look-and-feel for the flows and emails. |
Example:
{ "redirect_uri": "http://www.test.com", "fallback_uri": "http://www.test.com", "shipping_fee": 2, "mode": "iframe", "require_shipping": true, "prefill_info": { "address": { "postal_code": "94085", "country": "US" } }, "theme_object": { "name": "test", "primary_color": "ffffff", "background_color": "ffffff", "button_color": "000000", "secondary_color": "000000" }, "funding_sources": ["credit_card"] }
Payment Method Structure
Send the payment method object to pay for a checkout using previously acquired payment information, such as a credit card (for tokenization) or preapproval. Based on the type, only specify credit_card or preapproval fields. For example, if the payment method has type = "credit_card", specify "credit_card" field and do not specify "preapproval" field.
Fields:
Field | Required | Type | Description |
type | Yes | String (255 chars) | Payment Method type. Set to "payment_bank", "credit_card", or "preapproval" to match the corresponding object type below. Only one corresponding object can be set. |
payment_bank | No | Payment Bank Structure | Object that specifies the payment bank. |
credit_card | No | Credit Card Structure | Object that specifies the credit card. |
preapproval | No | Preapproval Structure | Object that specifies the preapproval. |
Example:
{ "type": "credit_card", "credit_card": { "id": 1334 } }
Payment Method Response Structure
Contains information about the payment method used.
Fields:
Field | Type | Description |
type | String (255 chars) | Payment Method type used in payment. Can be "credit_card" or "payment_bank". |
credit_card | Credit Card Structure | Object that specifies the credit card used in payment. Available if "type" is "credit_card". |
payment_bank | Payment Bank Structure | Object that specifies the payment bank used in payment. Available if "type" is "payment_bank" |
Example:
{ "type": "credit_card", "credit_card": { "id": 1334, "auto_capture": true } }
Payer response structure
Contains information about the payer such as their name, email, and home address. This object is returned only if a payment has been made.
Fields:
Field | Type | Description |
name | String (255 chars) | The name of the person paying (only returned if a payment has been made). |
String (255 chars) | The email address of the person paying (only returned if a payment has been made). | |
home_address | String (255 chars) | The home address of the person paying (only returned if a payment has been made). |
Example:
{ "name": "John Doe", "email": "test@o.com", "home_address": { "address1": "350 Convention Way", "address2": "Suite 200", "city": "Redwood City", "region": "CA", "postal_code": "94063", "country": "US" } }
Credit Card Structure
Object that specifies credit card ID used for tokenization.
Fields:
Field | Required | Type | Description |
id | Yes | Integer | Credit Card ID from /credit_card/create |
data | No | Credit Card additional data | Structure for passing in additional credit card information. |
auto_capture | No | Boolean | If present and set to false, the credit card will not be automatically charged (will only authorizated) and the the associated checkout will not progress past the state of 'authorized' until a call to /checkout/capture is made, or if 7 days pass without having called /checkout/capture, the associated checkout will transition to state 'cancelled'. |
Example:
{ "id": 1234, "data" : { "transaction_token": "1234567890ABCDEF" }, "auto_capture": true }
Credit Card Additional Data
Object that specifies additional credit card data.
Fields:
Field | Required | Type | Description |
transaction_token | No | String | Used for making a checkout call if the credit card was EMV enabled |
emv_receipt | No (response-only) | EMV Receipt Structure | Structure containing receipt information for EMV transactions. This parameter should not be added to requests. It will only be present in response structures. |
Example:
{ "transaction_token": "1234567890ABCDEF", "emv_receipt": { "application_label": null, "application_identifier": "A000000025010801", "terminal_identification": "001", "transaction_type": "00", "transaction_certificate": "8960887ACFD507FF", "authorization_code": "123456", "merchant_id": "123456789", "merchant_name": "EMV Merchant" } }
EMV Receipt Structure
Structure containing receipt information for EMV transactions.
Fields:
Field | Type | Description |
application_label | String (64 chars) | The label of the EMV Application. |
application_identifier | String (64 chars) | The application identifier (AID). |
terminal_identification | String (64 chars) | The terminal's identification number. |
transaction_type | String (2 chars) | The type of financial transaction. |
transaction_certificate | String (16 chars) | Cryptogram returned by the card when it approves a transaction. |
authorization_code | String (6 chars) | The transaction authorization code |
merchant_id | String (64 chars) | The merchant ID (mid) used for the transaction. |
merchant_name | String (256 chars) | The merchant's name |
Example:
{ "application_label": "American Express", "application_identifier": "A000000025010801", "terminal_identification": "001", "transaction_type": "00", "transaction_certificate": "8960887ACFD507FF", "authorization_code": "123456", "merchant_id": "123456789", "merchant_name": "EMV Merchant" }
Preapproval Structure
Object that specifies unique id of the preapproval associated with the checkout.
Fields:
Field | Type | Description |
id | Integer | Preapproval Id from /preapproval/create |
Example:
{ "id": 1234 }
Email Message Structure
Specifies a short message to send to the payee and payer when a checkout is successful.
Fields:
Field | Type | Description |
to_payee | String | A short message that will be included in the payment confirmation email to the payee. |
to_payer | String | A short message that will be included in the payment confirmation email to the payer. |
Example:
{ "to_payee": "test", "to_payer: "test" }
Fee Structure
Specifies the app_fee and fee_payer parameters for a checkout.
Fields:
Field | Type | Description |
app_fee | Decimal (64 bits) | The dollar amount that the application will receive in fees. App fees go into the API applications WePay account. Limited to 20% of the checkout amount. |
fee_payer | String (255 chars) |
Who will pay the fees (WePay's fees and any app fees). Set to "payer" (case-sensitive) to charge fees to the person paying (Payer will pay amount + fees, and payee will receive amount). Set to "payee" to charge fees to the person receiving money (Payer will pay amount, and payee will receive amount - fees). Set to "payer_from_app" so that payer will be charged app fee (if there is one) and API application will be charged WePay fee. Set to "payee_from_app" so that payee will be charged the app fee (if there is one) and the API application will be charged the WePay fee. Note that for the xxx_from_app calls: if the application's account goes negative, WePay will recover funds from bank account. Defaults to "payer". For EMV transactions the value must be either "payee" or "payee_from_app" |
Example:
{ "app_fee": 20, "fee_payer": "payer" }
Payments Prefill_Info Structure
The payments prefill_info structure contains prefill information for checkout, preapprovals, and subscription flows.
Fields:
Field | Type | Description |
name | String (255 chars) | The name of the person. |
String (255 chars) | The email address of the person. | |
phone_number | String (15 chars) | The phone number of the person. |
address | String (255 chars) | The street address. |
city | String (30 chars) | The city. |
state | String (2 chars) | The 2-letters US state code. Only for US addresses. |
region | String (30 chars) | The region. Only for non-US addresses when available. |
zip | String (10 chars) | The US zip or zip-plus code. Only for US addresses. |
postcode | String (14 chars) | The postcode. Only for non-US addresses when available. |
country | String (2 chars) | The 2-letters ISO-3166-1 country code. |
Example:
{ "name":"Bill Clerico", "phone_number":"555-555-5555" }
KYC Prefill_Info Structure
The KYC prefill_info structure contains prefill information for the KYC flow.
Fields:
Field | Type | Description |
name | String (255 chars) | The name of the person. |
String (255 chars) | The email address of the person. | |
phone_number | String (15 chars) | The phone number of the person. |
address | String (255 chars) | The street address. |
city | String (30 chars) | The city. |
state | String (2 chars) | The 2-letters US state code. Only for US addresses. |
region | String (30 chars) | The region. Only for non-US addresses when available. |
zip | String (10 chars) | The US zip or zip-plus code. Only for US addresses. |
postcode | String (14 chars) | The postcode. Only for non-US addresses when available. |
country | String (2 chars) | The 2-letters ISO-3166-1 country code. |
dob | String (10 chars) | The person's date of birth in the format YYYY-MM-DD. |
entity_name | String (255 chars) | Legal name of the business or organization. |
url | String (255 chars) | URL of business or organization's website. |
description | String (255 chars) | Description of business or organization |
Example:
{ "name":"Bill Clerico", "phone_number":"555-555-5555", "entity_name":"My Business Inc.", "url":"http://www.mybusiness.com" }
Theme Structure
The theme structure contains information to provide custom look-and-feel for the flows and emails.
Fields:
Field | Type | Description |
theme_id | Integer (64 bits) | The unique theme ID (assigned by WePay). |
name | String (64 chars) | The name for the theme. |
primary_color | String (6 chars) | The hex triplet for the primary color on important elements such as headers. |
secondary_color | String (6 chars) | The hex triplet for the secondary color on elements such as info boxes, and the focus styles on text inputs. |
background_color | String (6 chars) | The hex triplet for the the background color for onsite and iframe pages. |
button_color | String (6 chars) | The hex triplet for the the color for primary action buttons. |
Example:
{ "theme_id":12345, "name":"API Theme for API App: My Sample Application", "primary_color":"FFFFFF", "secondary_color":"000000", "background_color":"004C64", "button_color":"0084A0" }
Balances Structure
The balances structure contains information on the account balances and automated withdrawals. Accounts can have multiple balances (one for each currency they support).
Fields:
Field | Type | Description |
currency | String (3 chars) | The ISO 4217 currency code. |
balance | Number | The available balance for this account (specific to the currency specified). |
incoming_pending_amount | Number | The amount of money that being sent to the account that is still pending. |
outgoing_pending_amount | Number | The amount of money being settled to the merchant (either via check or ACH) that is still pending. |
reserved_amount | Number | The amount of money held in reserves. |
disputed_amount | Number | The amount of money disputed either via chargeback or through WePay. |
withdrawal_type | String (6 chars) | How the money will be settled to the merchant (either "check" or "ach"). |
withdrawal_period | String (6 chars) | How often money will be settled to the merchant ("daily", "weekly", or "monthly"). |
withdrawal_next_time | String (6 chars) | The unix time stamp for the next scheduled settlement. |
withdrawal_bank_name | String (6 chars) | The masked name of the entity funds will be settled to. If a check is being sent, this will be the name of the entity the check was mailed to (the "pay to the order of" field). |
Example:
[ { "currency":"USD", "balance":390.50, "incoming_pending_amount":635.30, "outgoing_pending_amount":210.00, "reserved_amount":0, "disputed_amount":0, "withdrawal_period":"daily", "withdrawal_type":"ach", "withdrawal_next_time":1370112217, "withdrawal_bank_name":"WellsFargo XXXXX3102" }, { "currency":"CAD", "balance":40.50, "incoming_pending_amount":20.30, "outgoing_pending_amount":70.00, "reserved_amount":0, "disputed_amount":0, "withdrawal_period":"daily", "withdrawal_type":"ach", "withdrawal_next_time":1370112217, "withdrawal_bank_name":"TD Canada XXXXX4156" } ]
Fee Response Structure
Contains information about the app fee, processing fee paid to WePay, and fee_payer.
Fields:
Field | Type | Description |
app_fee | Decimal (64 bits) | The dollar amount that the application will receive in fees. App fees go into the API applications WePay account. Limited to 20% of the checkout amount. |
processing_fee | Decimal (64 bits) | The dollar amount paid to WePay as a fee. |
fee_payer | String (255 chars) |
Who will pay the fees (WePay's fees and any app fees). Set to "payer" (case-sensitive) to charge fees to the person paying (Payer will pay amount + fees, and payee will receive amount). Set to "payee" to charge fees to the person receiving money (Payer will pay amount, and payee will receive amount - fees). Set to "payer_from_app" so that payer will be charged app fee (if there is one) and API application will be charged WePay fee. Set to "payee_from_app" so that payee will be charged the app fee (if there is one) and the API application will be charged the WePay fee. Note that for the xxx_from_app calls: if the application's account goes negative, WePay will recover funds from bank account. Defaults to "payer". |
Example:
{ "app_fee": 20, "processing_fee": 20, "fee_payer": "payer" }
Chargeback Response Structure
A chargeback occurs when a customer questions your charge with their bank or credit card company.
When a customer disputes your charge, you are given the opportunity to respond to the dispute with evidence that shows the charge is legitimate.
The chargeback object specifies whether there was a chargeback and the amount chargebacked.
Fields:
Field | Type | Description |
amount_charged_back | Decimal (64 bits) | If this checkout has been fully or partially charged back, this is the amount that has been charged back so far. |
dispute_uri | String | The uri that payers can visit to open a dispute for this checkout. Do not store the returned URI on your side as it can change. |
Example:
{ "amount_chargeback": 40, "dispute_uri": "" }
Refund Response Structure
You can use the /checkout/refund API call to refund a charge.
The refund object contains information about the amount refunded and reason for the refund.
Fields:
Field | Type | Description |
amount_refunded | Decimal (64 bits) | If this checkout has been fully or partially refunded, this has the amount that has been refunded so far. |
refund_reason | String (255 chars) | If the payment was refunded the reason why. |
Example:
{ "amount_refunded": 20, "refund_reason": "test" }
Hosted Checkout Response Structure
Contains the URI for the checkout, redirect URI, mode, theme object, and shipping information.
Fields:
Field | Type | Description |
checkout_uri | String (2083 chars) | The URI for the checkout. |
mode | String (255 chars) | What mode the checkout was displayed in. The options are 'iframe' or 'regular'. Choose 'iframe' if this is an iframe checkout. Mode defaults to 'regular'. |
redirect_uri | String (2083 chars) | The URI the payer will be redirected to after payment (if available). |
auto_capture | Boolean | If false, then this checkout will not progress past the state of 'authorized' until a call to /checkout/capture is made, or if 7 days pass without having called /checkout/capture, the checkout will transition to state 'cancelled'. |
shipping_fee | Decimal | The amount to be charged for shipping the item. |
require_shipping | Boolean | If true then the payer was required to enter their shipping address when paying. |
shipping_address | Shipping Address Structure | If 'require_shipping' was set to true and the payment was made, this will be the shipping address structure that the payer entered. |
theme_object | Theme Object Structure | The theme structure contains information to provide custom look-and-feel for the flows and emails. |
Example:
{ "checkout_uri": "http://wepay.com/api/iframe/1346959482/90404e3d/api_checkout?iframe=1", "redirect_uri": "http://www.test.com", "auto_capture": true, "shipping_fee": 2, "require_shipping": true, "shipping_address": null, "theme_object": { "theme_id": 183446800, "name": "test", "primary_color": "ffffff", "secondary_color": "000000", "background_color": "ffffff", "button_color": "000000" }, "mode": "iframe" }
Account Currency Status Structure
The account currency status structure contains information about an account's ability to process incoming/outgoing payments for a particular currency.
Fields:
Field | Type | Description |
currency | String | The ISO 4217 currency code. |
incoming_payments_status | String | Ability to process incoming payments for this currency. Can be "ok" or "paused". |
outgoing_payments_status | String | Ability to process outgoing payments for this currency. Can be "ok" or "paused". |
account_review_status | String | Review status of an account for this currency. Can be "not_requested", "pending", or "review_ok". |
Example:
{ "currency":"USD", "incoming_payments_status":"ok", "outgoing_payments_status":"ok", "account_review_status":"pending" }
International Phone Number Structure
The international phone number structure contains information to construct a valid E164 formatted phone number.
Fields:
Field | Type | Description |
country_code | String | Numeric country code. Optional '+', followed by 1-3 digits. |
phone_number | String | Phone number sans country code. |
Example:
{ "country_code":"+1", "phone_number":"5556667777" }
QR Code Structure
Links to QR code images at varying resolutions.
Fields:
Field | Type | Description |
@1x | String | Image URL for low-resolution displays; mobile devices. |
@2x | String | Image URL for high-resolution displays; mobile devices. |
@3x | String | Image URL for very high-resolution displays (iPhone 6s); mobile devices. |
shared_secret | String | For users without a QR scanner. |
Example:
{ "@1x": "https://static.wepay.com/{path}/qr@1x.png", "@2x": "https://static.wepay.com/{path}/qr@2x.png", "@3x": "https://static.wepay.com/{path}/qr@3x.png", "shared_secret": "CsUWMeVN6Jaw)y4B)£JnhyYiJq£$(^jAoas1e%KfT1CSeBpd" }
Payment Error Structure
This structure contains additional information about a payment error that occurred on a checkout.
Fields:
Field | Required | Type | Description |
type | Yes | String | The error type. This will be set to "bank_account" and match the corresponding object type below. |
bank_account | No | Bank Account Payment Error Structure | Information regarding the error regarding the payment using a bank account. |
Example:
{ "type": "bank_account", "bank_account": { "code": "R23", "description": "Credit entry refused by receiver" } }
Bank Account Payment Error Structure
This structure contains additional information related to the bank account payment error that occurred on a checkout.
Fields:
Field | Required | Type | Description |
code | Yes | String | The bank account code. See below for the mapping for the list of codes to their descriptions. |
description | Yes | String |
A description of what the code means. See below for the mapping for the list of codes to their descriptions. |
Example:
{ "code": "R23", "description": "Credit entry refused by receiver" }
Code | Description | Recommended Action |
R01 | Insufficient funds in account | Payer needs to resubmit payment with updated account information or a new account. |
R02 | Account is closed | Payer needs to resubmit payment with updated account information or a new account. |
R03 | No account on file | Payer needs to resubmit payment with updated account information or a new account. |
R04 | Invalid account number | Payer needs to resubmit payment with updated account information or a new account. |
R05 | Unauthorized debit to consumer account | Bank rejected payment request, no follow-up suggested |
R06 | Returned at request of originating bank | Payer needs to resubmit payment with updated account information or a new account. |
R07 | Authorization revoked by customer | Payer needs to resubmit payment with updated account information or a new account. |
R08 | Payment stopped | Payer needs to resubmit payment with updated account information or a new account. |
R09 | Insufficient collected funds in account being charged | Payer needs to resubmit payment with updated account information or a new account. |
R10 | Customer advises not authorized or amount incorrect | Bank rejected payment request, no follow-up suggested |
R11 | Check truncation return | Payer needs to resubmit payment with updated account information or a new account. |
R12 | Account sold to another financial institution | Payer needs to resubmit payment with updated account information or a new account. |
R13 | Invalid ACH routing number | Payer needs to resubmit payment with updated account information or a new account. |
R14 | Payee is deceased | Bank rejected payment request, no follow-up suggested |
R15 | Account holder is deceased | Bank rejected payment request, no follow-up suggested |
R16 | Account funds have been frozen | Payer needs to resubmit payment with updated account information or a new account. |
R17 | Item returned because of invalid data | Payer needs to resubmit payment with updated account information or a new account. |
R18 | Improper effective date | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R19 | Amount error | Payer needs to resubmit payment with updated account information or a new account. |
R20 | Account does not allow ACH transactions or limit has been exceeded | Payer needs to resubmit payment with updated account information or a new account. |
R21 | Invalid company identification | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R22 | Invalid individual ID | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R23 | Credit entry refused by receiver | Payer needs to resubmit payment with updated account information or a new account. |
R24 | Duplicate entry | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R25 | Addenda record error | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R26 | Mandatory field error | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R27 | Trace number error | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R28 | Routing/transit number check digit error | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R29 | Corporate customer advised not authorized | Bank rejected payment request, no follow-up suggested |
R30 | RDFI not participant in check truncation program | Payer needs to resubmit payment with updated account information or a new account. |
R31 | Permissible return entry | Payer needs to resubmit payment with updated account information or a new account. |
R32 | Receiving bank non-settlement | Payer needs to resubmit payment with updated account information or a new account. |
R33 | Return of item | Payer needs to resubmit payment with updated account information or a new account. |
R34 | Limited participation originating bank | Payer needs to resubmit payment with updated account information or a new account. |
R35 | Return of improper debit entry | Payer needs to resubmit payment with updated account information or a new account. |
R36 | Return of improper credit entry | Payer needs to resubmit payment with updated account information or a new account. |
R37 | Source document presented for payment | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R38 | Stop payment on source document | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R39 | Improper source document | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R40 | Return of item by government agency | Payer needs to resubmit payment with updated account information or a new account. |
R41 | Invalid Transaction Code | Payer needs to resubmit payment with updated account information or a new account. |
R42 | Routing/transit number check digit error | Payer needs to resubmit payment with updated account information or a new account. |
R43 | Invalid account number | Payer needs to resubmit payment with updated account information or a new account. |
R44 | Invalid individual ID | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R45 | Invalid individual or company name | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R46 | Invalid payee indicator code | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R47 | Duplicate enrollment | Payer needs to resubmit payment with updated account information or a new account. |
R50 | State law affecting RCK acceptance | Payer needs to resubmit payment with updated account information or a new account. |
R51 | Item is ineligible, notice not provided, signature not genuine, or original item altered for adjustment entry | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R52 | Stop payment on item | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R53 | Item and ACH entry presented for payment | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R61 | Misrouted return - RDFI has placed incorrect routing/transit # in RDFI id field | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R67 | Duplicate return | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R68 | Untimely return - the return was not sent within the established timeframe | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R69 | Field errors | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R70 | Permissible return entry not accepted | Payer needs to resubmit payment with updated account information or a new account. |
R71 | Misrouted dishonored return - incorrect routing/transit # in RDFI id field | Payer needs to resubmit payment with updated account information or a new account. |
R72 | Untimely return - dishonored return was not sent within the established timeframe | Payer needs to resubmit payment with updated account information or a new account. |
R73 | Timely original return - RDFI certifies the original return entry was sent within established timeframe for original returns | Payer needs to resubmit payment with updated account information or a new account. |
R74 | Corrected return - RDFI is correcting a previous return entry that was dishonored because it contained incomplete or incorrect information | Payer needs to resubmit payment with updated account information or a new account. |
R75 | Original return not a duplicate | Payer needs to resubmit payment with updated account information or a new account. |
R76 | No errors found | Payer needs to resubmit payment with updated account information or a new account. |
R80 | Cross-border payment coding error | Payer needs to resubmit payment with updated account information or a new account. |
R81 | Non-participant in cross-border program | Payer needs to resubmit payment with updated account information or a new account. |
R82 | Invalid foreign RDFI identification | Payer needs to resubmit payment with updated account information or a new account. |
R83 | Foreign RDFI unable to settle | Payer needs to resubmit payment with updated account information or a new account. |
R84 | Cross-border entry not processed by originating gateway operator | Payer needs to resubmit payment with updated account information or a new account. |
R94 | Administrative return item was processed and resubmitted as a photocopy | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R95 | Administrative return item was processed and resubmitted as a MICR-Split | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R97 | Administrative return item was processed and resubmitted with corrected dollar amount | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R98 | Indicates a return PAC (pre-authorized check); RDFI provides a text reason and indicated a new account number on the PAC itself | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |
R99 | Indicates a return PAC (pre-authorized check); RDFI provides a text reason on the PAC itself for which there is no equivalent return reason code | Bank system error. Customer needs to use a different bank account, preferably at a different bank. |