{"openapi":"3.0.4","info":{"title":"Payment API (processor)","termsOfService":"http://www.payra.com/terms","contact":{"name":"PAYRA","url":"http://payra.com/"},"version":"1.0","description":"**Payra public documentation:** **Tokens** (save ACH/card payment methods) and **Transactions** (pay, authorize, capture, void, refund, list, and detail).\n\nOther processor sections (accounts, customers, invoices, batches, terminals, payer fees, etc.) are hidden from this spec but remain in the vendor OpenAPI source for future use.\n\nRegional debit rails and internal processor codenames are omitted or redacted."},"paths":{"/v1/tokens/{id}":{"get":{"tags":["Tokens"],"summary":"Gets the masked details of a saved payment token.","parameters":[{"name":"id","in":"path","description":"The unique identifier of the token.","required":true,"schema":{"type":"string"}},{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"responses":{"200":{"description":"The token was found and the details are in the response body. All account numbers will be masked.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTokenResponse"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTokenResponse"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTokenResponse"}}}},"404":{"description":"The token could not be found."}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"delete":{"tags":["Tokens"],"summary":"Deletes a saved payment method. This will not impact any transactions that are already in process with this token.","parameters":[{"name":"id","in":"path","description":"The unique identifier of the token.","required":true,"schema":{"type":"string"}},{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"responses":{"200":{"description":"The token was deleted successfully."},"404":{"description":"The token could not be found."}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"/v1/tokens":{"post":{"tags":["Tokens"],"summary":"Saves a payment method as a token for later use.","parameters":[{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"requestBody":{"description":"Contains payment information to be stored.\n\n**Examples:** save **ACH** or **card** for later `tokenId` payments. Only one payment object per request.","content":{"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostTokenRequest"},"examples":{"tokenizeAch":{"summary":"Tokenize — US ACH bank account","description":"Save ACH credentials for later `tokenId` charges. Omit other payment objects.","value":{"userId":"user-001","emailAddress":"payer@example.com","ach":{"bankAccountHolder":"Test Account Holder","routingNumber":"021000021","accountNumber":"08292983191","bankAccountType":"PersonalChecking"}}},"tokenizeCard":{"summary":"Tokenize — card","description":"Save card details for later `tokenId` charges. Omit `ach`.","value":{"userId":"user-001","emailAddress":"payer@example.com","card":{"cardHolder":"Test Card Holder","cardNumber":"4895379980003055","expirationMonth":12,"expirationYear":2030,"securityCode":"123"}}}}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostTokenRequest"},"examples":{"tokenizeAch":{"summary":"Tokenize — US ACH bank account","description":"Save ACH credentials for later `tokenId` charges. Omit other payment objects.","value":{"userId":"user-001","emailAddress":"payer@example.com","ach":{"bankAccountHolder":"Test Account Holder","routingNumber":"021000021","accountNumber":"08292983191","bankAccountType":"PersonalChecking"}}},"tokenizeCard":{"summary":"Tokenize — card","description":"Save card details for later `tokenId` charges. Omit `ach`.","value":{"userId":"user-001","emailAddress":"payer@example.com","card":{"cardHolder":"Test Card Holder","cardNumber":"4895379980003055","expirationMonth":12,"expirationYear":2030,"securityCode":"123"}}}}},"application/*+json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostTokenRequest"},"examples":{"tokenizeAch":{"summary":"Tokenize — US ACH bank account","description":"Save ACH credentials for later `tokenId` charges. Omit other payment objects.","value":{"userId":"user-001","emailAddress":"payer@example.com","ach":{"bankAccountHolder":"Test Account Holder","routingNumber":"021000021","accountNumber":"08292983191","bankAccountType":"PersonalChecking"}}},"tokenizeCard":{"summary":"Tokenize — card","description":"Save card details for later `tokenId` charges. Omit `ach`.","value":{"userId":"user-001","emailAddress":"payer@example.com","card":{"cardHolder":"Test Card Holder","cardNumber":"4895379980003055","expirationMonth":12,"expirationYear":2030,"securityCode":"123"}}}}}}},"responses":{"201":{"description":"The token was created successfully. The Id for the new token is in the body of the response.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTokenResponse"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTokenResponse"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTokenResponse"}}}},"400":{"description":"The token was not created successfully. Error messages can be found in the body of the response.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}}}}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"/v1/transactions/{id}":{"get":{"tags":["Transactions"],"summary":"Gets detailed information on a single transaction.","parameters":[{"name":"id","in":"path","description":"The unique identifier of the transaction.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"responses":{"200":{"description":"The transaction was found and the details are in the response body. All account numbers will be masked.\n\n**Payment failures (card declines, ACH returns):** Successful HTTP status (typically **201** on pay/authorize, **200** on retrieve) with a transaction body — not HTTP 4xx. Inspect `errorMessage`, `transactionEventType`, and `events`. Card synchronous declines use `Reject`; ACH returns use `Return` (often asynchronous after settlement). See `#/components/schemas/CardDeclineReasonCatalog` and `#/components/schemas/AchReturnReasonCatalog`.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"},"examples":{"cardDecline":{"summary":"Card decline (Reject)","description":"HTTP 201 with `errorMessage` and a `Reject` event. Normalized decline catalog: `CardDeclineReasonCatalog`.","value":{"id":12345,"errorMessage":"Not enough balance","transactionEventType":"Reject","events":[{"eventName":"Reject","transactionEventType":"Reject","eventDate":"2026-06-10T14:22:11Z"}]}},"achReturn":{"summary":"ACH return (Return)","description":"HTTP 200 on retrieve (or webhook) with `errorMessage` formatted as `{code} - {meaning}`. Catalog: `AchReturnReasonCatalog`.","value":{"id":67890,"errorMessage":"R01 - Insufficient funds","transactionEventType":"Return","events":[{"eventName":"Return","transactionEventType":"Return","eventDate":"2026-06-12T09:15:00Z"}]}}}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"},"examples":{"cardDecline":{"summary":"Card decline (Reject)","description":"HTTP 201 with `errorMessage` and a `Reject` event. Normalized decline catalog: `CardDeclineReasonCatalog`.","value":{"id":12345,"errorMessage":"Not enough balance","transactionEventType":"Reject","events":[{"eventName":"Reject","transactionEventType":"Reject","eventDate":"2026-06-10T14:22:11Z"}]}},"achReturn":{"summary":"ACH return (Return)","description":"HTTP 200 on retrieve (or webhook) with `errorMessage` formatted as `{code} - {meaning}`. Catalog: `AchReturnReasonCatalog`.","value":{"id":67890,"errorMessage":"R01 - Insufficient funds","transactionEventType":"Return","events":[{"eventName":"Return","transactionEventType":"Return","eventDate":"2026-06-12T09:15:00Z"}]}}}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"},"examples":{"cardDecline":{"summary":"Card decline (Reject)","description":"HTTP 201 with `errorMessage` and a `Reject` event. Normalized decline catalog: `CardDeclineReasonCatalog`.","value":{"id":12345,"errorMessage":"Not enough balance","transactionEventType":"Reject","events":[{"eventName":"Reject","transactionEventType":"Reject","eventDate":"2026-06-10T14:22:11Z"}]}},"achReturn":{"summary":"ACH return (Return)","description":"HTTP 200 on retrieve (or webhook) with `errorMessage` formatted as `{code} - {meaning}`. Catalog: `AchReturnReasonCatalog`.","value":{"id":67890,"errorMessage":"R01 - Insufficient funds","transactionEventType":"Return","events":[{"eventName":"Return","transactionEventType":"Return","eventDate":"2026-06-12T09:15:00Z"}]}}}}}},"404":{"description":"The transaction could not be found."}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"/v1/transactions":{"get":{"tags":["Transactions"],"summary":"Returns a list of transactions that match the search criteria.","parameters":[{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}},{"name":"batchId","in":"query","description":"Filter for transactions in a given batch.","schema":{"type":"integer","format":"int64"}},{"name":"transactionEventType","in":"query","description":"Filter by the type of event that initiated the transaction. If used in \r\n            conjunction with the begin date and/or end date, this will filter by the date associated with that event. For example,\r\n            specifying an event type of Refund as well as dates would filter for transactions that were refunded in that date range.","schema":{"$ref":"#/components/schemas/TransactionEventType"}},{"name":"paymentMethodType","in":"query","description":"Filter by payment method type.","schema":{"$ref":"#/components/schemas/PaymentMethodType"}},{"name":"beginDate","in":"query","description":"The first date by which to filter.","schema":{"type":"string","format":"date-time"}},{"name":"endDate","in":"query","description":"The last date by which to filter.","schema":{"type":"string","format":"date-time"}},{"name":"page","in":"query","description":"The current page of the search results starting at 1.","schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","description":"The number of records per page. The default is 25 and the maximum is 50.","schema":{"type":"integer","format":"int32","default":25}}],"responses":{"200":{"description":"OK","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponseSearchResults"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponseSearchResults"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponseSearchResults"}}}}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"/v1/transactions/pay":{"post":{"tags":["Transactions"],"summary":"Attempts to initiate a payment using a specified payment method. This operation runs an authorization and capture on card transactions.","parameters":[{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"requestBody":{"description":"The payment details required to initiate the transaction.\n\nChoose an **example** that matches your flow. For card entry with a PAN, do not send `tokenId`.","content":{"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostPayRequest"},"examples":{"achUsBankAccount":{"summary":"ACH — US bank account","description":"US ACH debit: send `ach` only. Do not send `card` or `tokenId`. Optional: `customerId` / `orderId` for your reconciliation.","value":{"payer":"Integration Test Payer","emailAddress":"payer@example.com","customerId":"cust-ach-001","amount":40.5,"payerFee":0,"currency":"USD","orderId":"demo-ach-1234567890123","ach":{"bankAccountHolder":"Test Account Holder","routingNumber":"021000021","accountNumber":"08292983191","bankAccountType":"PersonalChecking"}}},"cardSaleSecuredFields":{"summary":"Card — sale (secured / itemization fields)","description":"For `POST /v1/transactions/pay`, include `customerId`, `orderId`, `shippingAmount`, `taxAmount`, and `lineItems` when your integration requires them for processing. Send `card` with PAN/CVV; **omit `tokenId`** for raw card entry.","value":{"payer":"Integration Test Payer","emailAddress":"payer@example.com","customerId":"cust-card-001","orderId":"demo-card-order-001","amount":40.5,"payerFee":0,"currency":"USD","shippingAmount":2.5,"taxAmount":1.2,"lineItems":[{"productCode":"SKU-1","productDescription":"Professional services","unitPrice":37.8,"quantity":1}],"card":{"cardHolder":"Test Card Holder","cardNumber":"4895379980003055","expirationMonth":12,"expirationYear":2030,"securityCode":"123"}}},"savedTokenCard":{"summary":"Card — saved token (`tokenId`)","description":"Charge a **card** token created with `POST /v1/tokens` using `card`. Send `tokenId` only; omit raw `card` / `ach`.","value":{"payer":"Jane Payor","emailAddress":"jane@example.com","customerId":"cust-card-002","orderId":"demo-tok-card-001","amount":25,"payerFee":0,"currency":"USD","tokenId":"replace-with-card-token-id"}},"savedTokenAch":{"summary":"ACH — saved bank token (`tokenId`)","description":"Debit using an **ACH** token from `POST /v1/tokens` with `ach`. Send `tokenId` only; omit raw bank numbers.","value":{"payer":"Jane Payor","emailAddress":"jane@example.com","customerId":"cust-ach-002","orderId":"demo-tok-ach-001","amount":25,"payerFee":0,"currency":"USD","tokenId":"replace-with-ach-token-id"}}}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostPayRequest"},"examples":{"achUsBankAccount":{"summary":"ACH — US bank account","description":"US ACH debit: send `ach` only. Do not send `card` or `tokenId`. Optional: `customerId` / `orderId` for your reconciliation.","value":{"payer":"Integration Test Payer","emailAddress":"payer@example.com","customerId":"cust-ach-001","amount":40.5,"payerFee":0,"currency":"USD","orderId":"demo-ach-1234567890123","ach":{"bankAccountHolder":"Test Account Holder","routingNumber":"021000021","accountNumber":"08292983191","bankAccountType":"PersonalChecking"}}},"cardSaleSecuredFields":{"summary":"Card — sale (secured / itemization fields)","description":"For `POST /v1/transactions/pay`, include `customerId`, `orderId`, `shippingAmount`, `taxAmount`, and `lineItems` when your integration requires them for processing. Send `card` with PAN/CVV; **omit `tokenId`** for raw card entry.","value":{"payer":"Integration Test Payer","emailAddress":"payer@example.com","customerId":"cust-card-001","orderId":"demo-card-order-001","amount":40.5,"payerFee":0,"currency":"USD","shippingAmount":2.5,"taxAmount":1.2,"lineItems":[{"productCode":"SKU-1","productDescription":"Professional services","unitPrice":37.8,"quantity":1}],"card":{"cardHolder":"Test Card Holder","cardNumber":"4895379980003055","expirationMonth":12,"expirationYear":2030,"securityCode":"123"}}},"savedTokenCard":{"summary":"Card — saved token (`tokenId`)","description":"Charge a **card** token created with `POST /v1/tokens` using `card`. Send `tokenId` only; omit raw `card` / `ach`.","value":{"payer":"Jane Payor","emailAddress":"jane@example.com","customerId":"cust-card-002","orderId":"demo-tok-card-001","amount":25,"payerFee":0,"currency":"USD","tokenId":"replace-with-card-token-id"}},"savedTokenAch":{"summary":"ACH — saved bank token (`tokenId`)","description":"Debit using an **ACH** token from `POST /v1/tokens` with `ach`. Send `tokenId` only; omit raw bank numbers.","value":{"payer":"Jane Payor","emailAddress":"jane@example.com","customerId":"cust-ach-002","orderId":"demo-tok-ach-001","amount":25,"payerFee":0,"currency":"USD","tokenId":"replace-with-ach-token-id"}}}},"application/*+json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostPayRequest"},"examples":{"achUsBankAccount":{"summary":"ACH — US bank account","description":"US ACH debit: send `ach` only. Do not send `card` or `tokenId`. Optional: `customerId` / `orderId` for your reconciliation.","value":{"payer":"Integration Test Payer","emailAddress":"payer@example.com","customerId":"cust-ach-001","amount":40.5,"payerFee":0,"currency":"USD","orderId":"demo-ach-1234567890123","ach":{"bankAccountHolder":"Test Account Holder","routingNumber":"021000021","accountNumber":"08292983191","bankAccountType":"PersonalChecking"}}},"cardSaleSecuredFields":{"summary":"Card — sale (secured / itemization fields)","description":"For `POST /v1/transactions/pay`, include `customerId`, `orderId`, `shippingAmount`, `taxAmount`, and `lineItems` when your integration requires them for processing. Send `card` with PAN/CVV; **omit `tokenId`** for raw card entry.","value":{"payer":"Integration Test Payer","emailAddress":"payer@example.com","customerId":"cust-card-001","orderId":"demo-card-order-001","amount":40.5,"payerFee":0,"currency":"USD","shippingAmount":2.5,"taxAmount":1.2,"lineItems":[{"productCode":"SKU-1","productDescription":"Professional services","unitPrice":37.8,"quantity":1}],"card":{"cardHolder":"Test Card Holder","cardNumber":"4895379980003055","expirationMonth":12,"expirationYear":2030,"securityCode":"123"}}},"savedTokenCard":{"summary":"Card — saved token (`tokenId`)","description":"Charge a **card** token created with `POST /v1/tokens` using `card`. Send `tokenId` only; omit raw `card` / `ach`.","value":{"payer":"Jane Payor","emailAddress":"jane@example.com","customerId":"cust-card-002","orderId":"demo-tok-card-001","amount":25,"payerFee":0,"currency":"USD","tokenId":"replace-with-card-token-id"}},"savedTokenAch":{"summary":"ACH — saved bank token (`tokenId`)","description":"Debit using an **ACH** token from `POST /v1/tokens` with `ach`. Send `tokenId` only; omit raw bank numbers.","value":{"payer":"Jane Payor","emailAddress":"jane@example.com","customerId":"cust-ach-002","orderId":"demo-tok-ach-001","amount":25,"payerFee":0,"currency":"USD","tokenId":"replace-with-ach-token-id"}}}}}},"responses":{"201":{"description":"The response represents the newly created transaction. Any error, if any, will be in the error message property.\n\n**Payment failures (card declines, ACH returns):** Successful HTTP status (typically **201** on pay/authorize, **200** on retrieve) with a transaction body — not HTTP 4xx. Inspect `errorMessage`, `transactionEventType`, and `events`. Card synchronous declines use `Reject`; ACH returns use `Return` (often asynchronous after settlement). See `#/components/schemas/CardDeclineReasonCatalog` and `#/components/schemas/AchReturnReasonCatalog`.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"},"examples":{"cardDecline":{"summary":"Card decline (Reject)","description":"HTTP 201 with `errorMessage` and a `Reject` event. Normalized decline catalog: `CardDeclineReasonCatalog`.","value":{"id":12345,"errorMessage":"Not enough balance","transactionEventType":"Reject","events":[{"eventName":"Reject","transactionEventType":"Reject","eventDate":"2026-06-10T14:22:11Z"}]}},"achReturnNote":{"summary":"ACH return (asynchronous)","description":"ACH returns are usually not synchronous on pay. Poll `GET /v1/transactions/{id}` or use webhooks when `Return` arrives.","value":{"id":67890,"errorMessage":"R01 - Insufficient funds","transactionEventType":"Return","events":[{"eventName":"Return","transactionEventType":"Return","eventDate":"2026-06-12T09:15:00Z"}]}}}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"},"examples":{"cardDecline":{"summary":"Card decline (Reject)","description":"HTTP 201 with `errorMessage` and a `Reject` event. Normalized decline catalog: `CardDeclineReasonCatalog`.","value":{"id":12345,"errorMessage":"Not enough balance","transactionEventType":"Reject","events":[{"eventName":"Reject","transactionEventType":"Reject","eventDate":"2026-06-10T14:22:11Z"}]}},"achReturnNote":{"summary":"ACH return (asynchronous)","description":"ACH returns are usually not synchronous on pay. Poll `GET /v1/transactions/{id}` or use webhooks when `Return` arrives.","value":{"id":67890,"errorMessage":"R01 - Insufficient funds","transactionEventType":"Return","events":[{"eventName":"Return","transactionEventType":"Return","eventDate":"2026-06-12T09:15:00Z"}]}}}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"},"examples":{"cardDecline":{"summary":"Card decline (Reject)","description":"HTTP 201 with `errorMessage` and a `Reject` event. Normalized decline catalog: `CardDeclineReasonCatalog`.","value":{"id":12345,"errorMessage":"Not enough balance","transactionEventType":"Reject","events":[{"eventName":"Reject","transactionEventType":"Reject","eventDate":"2026-06-10T14:22:11Z"}]}},"achReturnNote":{"summary":"ACH return (asynchronous)","description":"ACH returns are usually not synchronous on pay. Poll `GET /v1/transactions/{id}` or use webhooks when `Return` arrives.","value":{"id":67890,"errorMessage":"R01 - Insufficient funds","transactionEventType":"Return","events":[{"eventName":"Return","transactionEventType":"Return","eventDate":"2026-06-12T09:15:00Z"}]}}}}}},"400":{"description":"The payment was not created successfully. Error messages can be found in the body of the response.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}}}}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}],"description":"**Examples (Swagger):** ACH bank account, card sale with itemization fields, saved **card** token, or saved **ACH** token. Use exactly one of raw `ach`, raw `card`, or `tokenId` per request."},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"/v1/transactions/authorize":{"post":{"tags":["Transactions"],"summary":"Attempts to authorize a payment using on a card.","parameters":[{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"requestBody":{"description":"The payment details required to authorize the transaction.\n\n**Examples:** card with `customerId` / `orderId`, or saved card `tokenId` only.","content":{"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostAuthorizeRequest"},"examples":{"cardAuthorizeSecured":{"summary":"Authorize — card with `customerId` and `orderId`","description":"For `POST /v1/transactions/authorize`, supply `customerId` and `orderId` when your integration requires them.","value":{"payer":"Integration Test Payer","emailAddress":"payer@example.com","customerId":"cust-card-auth-001","orderId":"demo-auth-order-001","amount":40.5,"currency":"USD","card":{"cardHolder":"Test Card Holder","cardNumber":"4895379980003055","expirationMonth":12,"expirationYear":2030,"securityCode":"123"}}},"cardAuthorizeToken":{"summary":"Authorize — saved card token","description":"Use `tokenId` from tokenization; omit raw `card`.","value":{"payer":"Jane Payor","emailAddress":"jane@example.com","customerId":"cust-card-auth-002","orderId":"demo-auth-tok-001","amount":40.5,"currency":"USD","tokenId":"replace-with-card-token-id"}}}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostAuthorizeRequest"},"examples":{"cardAuthorizeSecured":{"summary":"Authorize — card with `customerId` and `orderId`","description":"For `POST /v1/transactions/authorize`, supply `customerId` and `orderId` when your integration requires them.","value":{"payer":"Integration Test Payer","emailAddress":"payer@example.com","customerId":"cust-card-auth-001","orderId":"demo-auth-order-001","amount":40.5,"currency":"USD","card":{"cardHolder":"Test Card Holder","cardNumber":"4895379980003055","expirationMonth":12,"expirationYear":2030,"securityCode":"123"}}},"cardAuthorizeToken":{"summary":"Authorize — saved card token","description":"Use `tokenId` from tokenization; omit raw `card`.","value":{"payer":"Jane Payor","emailAddress":"jane@example.com","customerId":"cust-card-auth-002","orderId":"demo-auth-tok-001","amount":40.5,"currency":"USD","tokenId":"replace-with-card-token-id"}}}},"application/*+json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostAuthorizeRequest"},"examples":{"cardAuthorizeSecured":{"summary":"Authorize — card with `customerId` and `orderId`","description":"For `POST /v1/transactions/authorize`, supply `customerId` and `orderId` when your integration requires them.","value":{"payer":"Integration Test Payer","emailAddress":"payer@example.com","customerId":"cust-card-auth-001","orderId":"demo-auth-order-001","amount":40.5,"currency":"USD","card":{"cardHolder":"Test Card Holder","cardNumber":"4895379980003055","expirationMonth":12,"expirationYear":2030,"securityCode":"123"}}},"cardAuthorizeToken":{"summary":"Authorize — saved card token","description":"Use `tokenId` from tokenization; omit raw `card`.","value":{"payer":"Jane Payor","emailAddress":"jane@example.com","customerId":"cust-card-auth-002","orderId":"demo-auth-tok-001","amount":40.5,"currency":"USD","tokenId":"replace-with-card-token-id"}}}}}},"responses":{"201":{"description":"The response represents the newly created transaction. Any error, if any, will be in the error message property.\n\n**Payment failures (card declines, ACH returns):** Successful HTTP status (typically **201** on pay/authorize, **200** on retrieve) with a transaction body — not HTTP 4xx. Inspect `errorMessage`, `transactionEventType`, and `events`. Card synchronous declines use `Reject`; ACH returns use `Return` (often asynchronous after settlement). See `#/components/schemas/CardDeclineReasonCatalog` and `#/components/schemas/AchReturnReasonCatalog`.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"},"examples":{"cardDecline":{"summary":"Card decline (Reject)","description":"HTTP 201 with `errorMessage` and a `Reject` event. Normalized decline catalog: `CardDeclineReasonCatalog`.","value":{"id":12345,"errorMessage":"Not enough balance","transactionEventType":"Reject","events":[{"eventName":"Reject","transactionEventType":"Reject","eventDate":"2026-06-10T14:22:11Z"}]}}}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"},"examples":{"cardDecline":{"summary":"Card decline (Reject)","description":"HTTP 201 with `errorMessage` and a `Reject` event. Normalized decline catalog: `CardDeclineReasonCatalog`.","value":{"id":12345,"errorMessage":"Not enough balance","transactionEventType":"Reject","events":[{"eventName":"Reject","transactionEventType":"Reject","eventDate":"2026-06-10T14:22:11Z"}]}}}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"},"examples":{"cardDecline":{"summary":"Card decline (Reject)","description":"HTTP 201 with `errorMessage` and a `Reject` event. Normalized decline catalog: `CardDeclineReasonCatalog`.","value":{"id":12345,"errorMessage":"Not enough balance","transactionEventType":"Reject","events":[{"eventName":"Reject","transactionEventType":"Reject","eventDate":"2026-06-10T14:22:11Z"}]}}}}}},"400":{"description":"The authorization was not created successfully. Error messages can be found in the body of the response.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}}}}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"/v1/transactions/{id}/capture":{"post":{"tags":["Transactions"],"summary":"Attempts to capture a payment from a previously authorized transaction.","parameters":[{"name":"id","in":"path","description":"The identifier of the previously authorized transaction.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"requestBody":{"description":"The details of the amount to be captured.\n\n**Example:** capture with `lineItems` (and optional `amount` / fee fields) when required.","content":{"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostCaptureRequest"},"examples":{"captureWithLineItems":{"summary":"Capture — amount and `lineItems`","description":"For `POST /v1/transactions/{id}/capture`, include `lineItems` when your integration requires itemization on capture.","value":{"amount":40.5,"payerFee":0,"shippingAmount":2.5,"taxAmount":1.2,"lineItems":[{"productCode":"SKU-1","productDescription":"Professional services","unitPrice":37.8,"quantity":1}]}}}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostCaptureRequest"},"examples":{"captureWithLineItems":{"summary":"Capture — amount and `lineItems`","description":"For `POST /v1/transactions/{id}/capture`, include `lineItems` when your integration requires itemization on capture.","value":{"amount":40.5,"payerFee":0,"shippingAmount":2.5,"taxAmount":1.2,"lineItems":[{"productCode":"SKU-1","productDescription":"Professional services","unitPrice":37.8,"quantity":1}]}}}},"application/*+json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostCaptureRequest"},"examples":{"captureWithLineItems":{"summary":"Capture — amount and `lineItems`","description":"For `POST /v1/transactions/{id}/capture`, include `lineItems` when your integration requires itemization on capture.","value":{"amount":40.5,"payerFee":0,"shippingAmount":2.5,"taxAmount":1.2,"lineItems":[{"productCode":"SKU-1","productDescription":"Professional services","unitPrice":37.8,"quantity":1}]}}}}}},"responses":{"201":{"description":"The response represents the newly created transaction. Any error, if any, will be in the error message property.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"}}}},"400":{"description":"The capture transaction was not created successfully. Error messages can be found in the body of the response.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}}}}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"/v1/transactions/{id}/void":{"post":{"tags":["Transactions"],"summary":"Attempts to void a payment. Note that voiding is only allowed on new transactions where the movement of \r\nfunds has not yet occurred.","parameters":[{"name":"id","in":"path","description":"The identifier of the transaction.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"responses":{"200":{"description":"The transaction was voided created successfully."},"400":{"description":"The transaction was not voided successfully. Error messages can be found in the body of the response.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}}}}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"/v1/transactions/{id}/refund":{"post":{"tags":["Transactions"],"summary":"Attempts to refund a successful payment.","parameters":[{"name":"id","in":"path","description":"The identifier of the transaction to be refunded.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"requestBody":{"description":"The details of the amount to be refunded.","content":{"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostRefundRequest"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostRefundRequest"}},"application/*+json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/PostRefundRequest"}}}},"responses":{"201":{"description":"The response represents the newly created transaction. Any error, if any, will be in the error message property.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"}}}},"400":{"description":"The refund transaction was not created successfully. Error messages can be found in the body of the response.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/ValidationProblemDetails"}}}}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"/v1/transactions/{id}/metadata":{"patch":{"tags":["Transactions"],"summary":"Upserts metadata values. This is only allowed for a limited time after the initial creation of the transaction record.","parameters":[{"name":"id","in":"path","description":"The identifier of the transaction to be updated.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"accountKey","in":"header","description":"Used to make API calls on behalf of another account.","schema":{"type":"string"}},{"name":"culture","in":"header","description":"The culture to be used when setting the language for error messages.","schema":{"type":"string"}}],"requestBody":{"description":"Dictionary of values to be upserted. Any value of null will remove a previously saved key.","content":{"application/json; x-api-version=1.0":{"schema":{"type":"object","additionalProperties":{"type":"string"}}},"text/json; x-api-version=1.0":{"schema":{"type":"object","additionalProperties":{"type":"string"}}},"application/*+json; x-api-version=1.0":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"responses":{"200":{"description":"The response represents the newly updated transaction.","content":{"text/plain; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponseSearchResults"}},"application/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponseSearchResults"}},"text/json; x-api-version=1.0":{"schema":{"$ref":"#/components/schemas/GetTransactionResponseSearchResults"}}}},"400":{"description":"The transaction was not updated successfully. Error messages can be found in the body of the response."}},"security":[{"basic":[]}],"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]}},"components":{"schemas":{"Ach":{"required":["accountNumber","bankAccountHolder","routingNumber"],"type":"object","properties":{"bankAccountHolder":{"maxLength":150,"minLength":1,"type":"string","description":"The name of the bank account holder.","example":"Acme Corporation"},"routingNumber":{"maxLength":9,"minLength":9,"type":"string","description":"The 9 digit routing number.","example":"021000021"},"bankAccountType":{"$ref":"#/components/schemas/BankAccountType"},"accountNumber":{"maxLength":17,"minLength":4,"type":"string","description":"The full account number.","example":"08292983191"}},"additionalProperties":false,"description":"The banking information used to process an ACH payment."},"Address":{"type":"object","properties":{"name":{"maxLength":150,"type":"string","description":"The name at the address","nullable":true,"example":"Acme Corporation"},"streetAddress":{"maxLength":250,"type":"string","description":"The street address including the street and unit number.","nullable":true,"example":"1234 Main Street"},"city":{"maxLength":100,"type":"string","description":"The city of the address.","nullable":true,"example":"Austin"},"stateOrProvince":{"maxLength":100,"type":"string","description":"The abbreviated state or province of the address.","nullable":true,"example":"TX"},"postalCode":{"maxLength":15,"type":"string","description":"The postal code of the address.","nullable":true,"example":"78701"},"country":{"maxLength":2,"type":"string","description":"The two character country code.","nullable":true,"example":"US"},"phoneNumber":{"type":"string","description":"The phone number.","nullable":true,"example":"512-555-1234"}},"additionalProperties":false,"description":"Full address information."},"BankAccountType":{"enum":["PersonalSavings","PersonalChecking","CorporateSavings","CorporateChecking"],"type":"string"},"BrowserInformation":{"type":"object","properties":{"userAgent":{"type":"string","description":"The User-Agent request header value.","nullable":true,"example":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"}},"additionalProperties":false,"description":"The information on the user's browser."},"Card":{"required":["cardHolder","cardNumber","expirationMonth","expirationYear"],"type":"object","properties":{"cardHolder":{"maxLength":150,"minLength":1,"type":"string","description":"The name of the card holder.","example":"John Smith"},"cardNumber":{"maxLength":16,"minLength":14,"type":"string","description":"The card number.","format":"credit-card","example":"4895379980003055"},"cardBrand":{"$ref":"#/components/schemas/CardBrand"},"expirationMonth":{"maximum":12,"minimum":1,"type":"integer","description":"The expiration month.","format":"int32","example":12},"expirationYear":{"type":"integer","description":"The two or four digit expiration year.","format":"int32","example":2025},"securityCode":{"type":"string","description":"The CVV/security code for the card.","nullable":true,"example":"123"}},"additionalProperties":false,"description":"The card details used to process a payment."},"CardBrand":{"enum":["Visa","Mastercard","AmericanExpress","Discover","DinersClub"],"type":"string"},"Channel":{"enum":["API","Terminal","Automated","Scan","Bank"],"type":"string"},"Currency":{"enum":["USD","CAD","EUR","AUD","GBP","NZD","DKK","NOK","SEK","CHF"],"type":"string"},"GetTokenResponse":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the token.","nullable":true,"example":"123"},"userId":{"type":"string","description":"The user Id from the application that represents the user that owns this payment method.","nullable":true,"example":"jsmith12345"},"emailAddress":{"type":"string","description":"The email address of the owner of this payment method.","nullable":true,"example":"jsmith@example.com"},"card":{"$ref":"#/components/schemas/Card"},"ach":{"$ref":"#/components/schemas/Ach"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A  <string, string>  dictionary of any application-specific metadata to have stored with the token record.","nullable":true,"example":{"userId":"jsmith","accountId":"123"}},"address":{"$ref":"#/components/schemas/Address"},"status":{"$ref":"#/components/schemas/TokenStatus"}},"additionalProperties":false,"description":"The masked payment method that has been tokenized."},"GetTransactionResponse":{"type":"object","properties":{"id":{"type":"integer","description":"The unique identifier of the transaction.","format":"int64","example":12345},"payer":{"type":"string","description":"The name of the payer. This is not necessarily the same name as the card or bank account holder name.","nullable":true,"example":"John Smith"},"userId":{"type":"string","description":"The user Id from the application that represents the user tied to this transaction.","nullable":true,"example":"jsmith12345"},"emailAddress":{"type":"string","description":"The email address of the user.","nullable":true,"example":"jsmith@example.com"},"customerId":{"type":"string","description":"The customer identifier for the entity making the payment.","nullable":true,"example":"1234567890"},"orderId":{"type":"string","description":"The unique order identifier for this transaction.","nullable":true,"example":"abcdefghi"},"ach":{"$ref":"#/components/schemas/Ach"},"card":{"$ref":"#/components/schemas/Card"},"terminalId":{"type":"integer","description":"The identifier for the terminal if the transaction was through a point of sale device.","format":"int64","nullable":true,"example":67890},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A  <string, string>  dictionary of any application-specific metadata to have stored with the payment record.","nullable":true,"example":{"userId":"jsmith","accountId":"123"}},"billingAddress":{"$ref":"#/components/schemas/Address"},"shippingAddress":{"$ref":"#/components/schemas/Address"},"amount":{"type":"number","description":"The total amount of the transaction. This is inclusive all fees, if any. This will be a negative amount in the\r\ncase of refunds, ACH returns, chargebacks, etc.","format":"double","example":787.33},"payerFee":{"type":"number","description":"The amount the payer was charged to initiate this transaction, if any. This would be a non-zero amount when\r\nthe payer is charged a fee (e.g. a convenience fee or surcharge).","format":"double","nullable":true,"example":5.12},"platformFees":{"$ref":"#/components/schemas/PlatformFees"},"shippingAmount":{"type":"number","description":"The amount charged for shipping, if any.","format":"double","nullable":true,"example":7.87},"taxAmount":{"type":"number","description":"The amount charged for tax, if any.","format":"double","nullable":true,"example":78.73},"lineItems":{"type":"array","items":{"$ref":"#/components/schemas/TransactionLineItem"},"description":"Line items needed for Level 2/3 qualification.","nullable":true},"paidCustomers":{"type":"array","items":{"$ref":"#/components/schemas/TransactionPaidCustomer"},"description":"The list of customers tied to this transaction.","nullable":true},"paidInvoices":{"type":"array","items":{"$ref":"#/components/schemas/TransactionPaidInvoice"},"description":"The list of paid invoices on this transaction.","nullable":true},"currency":{"$ref":"#/components/schemas/Currency"},"comments":{"type":"string","description":"Additional comments tied to the transaction.","nullable":true,"example":"We are so excited about this purchase!"},"errorMessage":{"type":"string","description":"The translated error message, if any.\n\nPayment failure detail when present. Card declines (`Reject`) use normalized decline messages — see `CardDeclineReasonCatalog`. ACH returns (`Return`) typically use `{code} - {meaning}` (e.g. `R01 - Insufficient funds`) — see `AchReturnReasonCatalog`. HTTP 400 `ValidationProblemDetails` covers request validation only.","nullable":true,"example":"Not enough balance"},"transactionEventType":{"$ref":"#/components/schemas/TransactionEventType"},"originalTransactionId":{"type":"integer","description":"Points back to the original transaction. For example, if this is a refund, the original transaction Id would\r\nbe a reference to the original payment record.","format":"int64","nullable":true,"example":null},"processorTransactionId":{"type":"string","description":"The identifier for the transaction at the underlying processor.","nullable":true,"example":null,"deprecated":true},"events":{"type":"array","items":{"$ref":"#/components/schemas/TransactionEvent"},"description":"The list of events that occurred on this transaction.","nullable":true,"example":[{"EventDate":"1/1/2023","TransactionEventType":"Payment"}]},"channel":{"$ref":"#/components/schemas/Channel"},"isVoidable":{"type":"boolean","description":"True if the transaction is voidable. Otherwise, this is false."},"nextAction":{"$ref":"#/components/schemas/NextAction"},"processorTransaction":{"$ref":"#/components/schemas/ProcessorTransaction"}},"additionalProperties":false,"description":"The details of a transaction. This could represent a payment, refund, chargeback, etc."},"GetTransactionResponseSearchResults":{"type":"object","properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/GetTransactionResponse"},"description":"The list of records to display in the search results.","nullable":true},"totalRecords":{"type":"integer","description":"The total number of records in the search results.","format":"int32"}},"additionalProperties":false,"description":"Represents search results to display on a page."},"NextAction":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/NextActionType"},"url":{"type":"string","description":"The URL to redirect the user to complete the payment.","nullable":true}},"additionalProperties":false,"description":"The next action to take after a payment is made."},"NextActionType":{"enum":["Redirect"],"type":"string"},"PaymentMethodType":{"enum":["Card","ACH"],"type":"string","description":"Public Payra documentation lists Card and ACH only; other values may exist at runtime.\n\nListed for Payra public documentation as **Card** and **ACH** only."},"PlatformFees":{"type":"object","properties":{"flatFee":{"type":"number","description":"The flat fee.","format":"double","nullable":true,"example":5},"percentageFee":{"type":"number","description":"The percentage fee.","format":"double","nullable":true,"example":0.12},"total":{"type":"number","description":"The total fee.","format":"double","nullable":true,"example":5.12}},"additionalProperties":false,"description":"The construct to hold the platform fees."},"PostAuthorizeRequest":{"required":["amount","payer"],"type":"object","properties":{"payer":{"maxLength":150,"minLength":1,"type":"string","description":"The name of the payer. This is not necessarily the same name as the card or bank account holder name.","example":"John Smith"},"userId":{"maxLength":150,"type":"string","description":"The user Id from the application that represents the user that owns this payment method.","nullable":true,"example":"jsmith12345"},"emailAddress":{"maxLength":150,"type":"string","description":"The email address of the user.","format":"email","nullable":true,"example":"jsmith@example.com"},"customerId":{"maxLength":25,"type":"string","description":"The customer identifier for the entity making the payment.","nullable":true,"example":"1234567890","deprecated":true},"orderId":{"maxLength":25,"type":"string","description":"The unique order identifier for this transaction.","nullable":true,"example":"abcdefghij"},"tokenId":{"type":"string","description":"The token identifier for a previously saved payment method. If this is supplied, the other payment\r\noptions can be left as null.","nullable":true,"example":"12345"},"card":{"$ref":"#/components/schemas/Card"},"processorToken":{"$ref":"#/components/schemas/ProcessorToken"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A  <string, string>  dictionary of any application-specific metadata to have stored with the payment record.","nullable":true,"example":{"userId":"jsmith","accountId":"123"}},"billingAddress":{"$ref":"#/components/schemas/Address"},"shippingAddress":{"$ref":"#/components/schemas/Address"},"amount":{"maximum":2147483647,"minimum":0,"type":"number","description":"The total amount being paid. This is inclusive of the payer fee, if any.","format":"double","example":787.33},"shippingAmount":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount charged for shipping, if any.","format":"double","nullable":true,"example":7.87},"taxAmount":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount charged for tax, if any.","format":"double","nullable":true,"example":78.73},"lineItems":{"type":"array","items":{"$ref":"#/components/schemas/TransactionLineItem"},"description":"Line items needed for Level 2/3 qualification.","nullable":true},"paidCustomers":{"type":"array","items":{"$ref":"#/components/schemas/TransactionPaidCustomer"},"description":"The list of customers tied to this transaction.","nullable":true},"paidInvoices":{"type":"array","items":{"$ref":"#/components/schemas/TransactionPaidInvoice"},"description":"The list of paid invoices on this transaction.","nullable":true},"currency":{"$ref":"#/components/schemas/Currency"},"comments":{"type":"string","description":"Additional comments entered in by the payer.","nullable":true,"example":"We are so excited about this purchase!"},"ipAddress":{"type":"string","description":"The IP address of the payer.","format":"string","nullable":true},"browserInformation":{"$ref":"#/components/schemas/BrowserInformation"},"returnUrl":{"type":"string","description":"The return URL to be used if an authorization flow is supported by the integrating application (e.g. 3DS).","format":"uri","nullable":true,"example":null}},"additionalProperties":false,"description":"The model to generate a card authorization."},"PostCaptureRequest":{"required":["payerFee"],"type":"object","properties":{"amount":{"maximum":2147483647,"minimum":0.01,"type":"number","description":"The amount of the previously authorized transaction that is being captured.","format":"double","example":51.2},"payerFee":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount the payer is being charged to initiate this transaction. This should only be a non-zero amount when\r\nyou are charging the payer a fee (e.g. a convenience fee or surcharge).","format":"double","example":5.12},"platformFee":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount the platform is charging the account for this transaction. If left null, the fee will be calculated \r\nautomatically based on the fee settings on the account. This is only used as an override to that calculation.\r\nOnly the platform can set this fee.","format":"double","nullable":true,"example":5.12},"shippingAmount":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount charged for shipping, if any.","format":"double","nullable":true,"example":7.87},"taxAmount":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount charged for tax, if any.","format":"double","nullable":true,"example":78.73},"lineItems":{"type":"array","items":{"$ref":"#/components/schemas/TransactionLineItem"},"description":"Line items needed for Level 2/3 qualification.","nullable":true},"paidCustomers":{"type":"array","items":{"$ref":"#/components/schemas/TransactionPaidCustomer"},"description":"The list of customers tied to this transaction.","nullable":true},"paidInvoices":{"type":"array","items":{"$ref":"#/components/schemas/TransactionPaidInvoice"},"description":"The list of paid invoices on this transaction.","nullable":true}},"additionalProperties":false,"description":"The model to capture a previously authorized transaction."},"PostPayRequest":{"required":["amount","payer","payerFee"],"type":"object","properties":{"payer":{"maxLength":150,"minLength":1,"type":"string","description":"The name of the payer. This is not necessarily the same name as the card or bank account holder name.","example":"John Smith"},"userId":{"type":"string","description":"The user Id from the application that represents the user that owns this payment method.","nullable":true,"example":"jsmith12345"},"emailAddress":{"maxLength":150,"type":"string","description":"The email address of the user.","format":"email","nullable":true,"example":"jsmith@example.com"},"customerId":{"maxLength":25,"type":"string","description":"The customer identifier for the entity making the payment.","nullable":true,"example":"1234567890","deprecated":true},"orderId":{"maxLength":25,"type":"string","description":"The unique order identifier for this transaction.","nullable":true,"example":"abcdefghi"},"tokenId":{"type":"string","description":"The token identifier for a previously saved payment method. If this is supplied, the other payment\r\noptions can be left as null.\n\n**Pay with raw `card` or `ach`:** omit `tokenId`. **Pay with a saved method:** send only `tokenId` (no raw PAN or bank numbers).","nullable":true,"example":"12345"},"ach":{"$ref":"#/components/schemas/Ach"},"card":{"$ref":"#/components/schemas/Card"},"processorToken":{"$ref":"#/components/schemas/ProcessorToken"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A  <string, string>  dictionary of any application-specific metadata to have stored with the payment record.","nullable":true,"example":{"userId":"jsmith","accountId":"123"}},"billingAddress":{"$ref":"#/components/schemas/Address"},"shippingAddress":{"$ref":"#/components/schemas/Address"},"amount":{"maximum":2147483647,"minimum":0.01,"type":"number","description":"The total amount being paid. This is inclusive of the payer fee, if any.","format":"double","example":787.33},"payerFee":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount the payer is being charged to initiate this transaction. This should only be a non-zero amount when\r\nyou are charging the payer a fee (e.g. a convenience fee or surcharge).","format":"double","example":5.12},"platformFee":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount the platform is charging the account for this transaction. If left null, the fee will be calculated \r\nautomatically based on the fee settings on the account. This is only used as an override to that calculation.\r\nOnly the platform can set this fee.","format":"double","nullable":true,"example":5.12},"shippingAmount":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount charged for shipping, if any.","format":"double","nullable":true,"example":7.87},"taxAmount":{"maximum":2147483647,"minimum":0,"type":"number","description":"The amount charged for tax, if any.","format":"double","nullable":true,"example":78.73},"lineItems":{"type":"array","items":{"$ref":"#/components/schemas/TransactionLineItem"},"description":"Line items needed for Level 2/3 qualification.","nullable":true},"paidCustomers":{"type":"array","items":{"$ref":"#/components/schemas/TransactionPaidCustomer"},"description":"The list of customers tied to this transaction.","nullable":true},"paidInvoices":{"type":"array","items":{"$ref":"#/components/schemas/TransactionPaidInvoice"},"description":"The list of paid invoices on this transaction.","nullable":true},"currency":{"$ref":"#/components/schemas/Currency"},"comments":{"type":"string","description":"Additional comments entered in by the payer.","nullable":true,"example":"We are so excited about this purchase!"},"ipAddress":{"type":"string","description":"The IP address of the payer.","format":"string","nullable":true,"example":"127.0.0.1"},"browserInformation":{"$ref":"#/components/schemas/BrowserInformation"},"returnUrl":{"type":"string","description":"The return URL to be used if an authorization flow is supported by the integrating application (e.g. 3DS).","format":"uri","nullable":true,"example":null}},"additionalProperties":false,"description":"The model to generate a payment.\n\nPublic Payra documentation covers **US ACH** (`ach`), **card** (`card` or `processorToken`), and **saved tokens** (`tokenId`). Other regional payment objects are omitted from this spec."},"PostRefundRequest":{"type":"object","properties":{"amount":{"maximum":2147483647,"minimum":0.01,"type":"number","description":"The amount to be refunded.","format":"double","example":51.2}},"additionalProperties":false,"description":"Requests the refund of a specific amount on a transaction."},"PostTokenRequest":{"type":"object","properties":{"userId":{"maxLength":150,"type":"string","description":"The user Id from the application that represents the user that owns this payment method. This is required\r\nfor network tokenization.","nullable":true,"example":"jsmith12345"},"emailAddress":{"maxLength":150,"type":"string","description":"The email address of the owner of this payment method. This is required to enable network tokenization.","format":"email","nullable":true,"example":"jsmith@example.com"},"ach":{"$ref":"#/components/schemas/Ach"},"card":{"$ref":"#/components/schemas/Card"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A  <string, string>  dictionary of any application-specific metadata to have stored with the token record.","nullable":true,"example":{"userId":"jsmith","accountId":"123"}},"address":{"$ref":"#/components/schemas/Address"},"validateAccount":{"type":"boolean","description":"True if the account validation should be run immediately before tokenization. Otherwise, this is false. This is currently only supported on ACH payments methods.","example":false,"deprecated":true}},"additionalProperties":false,"description":"Used to save a payment method as a token. Only one of the payment methods should be supplied in the request."},"ProcessorToken":{"required":["maskedAccountNumber","paymentMethodType","tokenId"],"type":"object","properties":{"customerId":{"type":"string","description":"The processor's customer identifier.","nullable":true,"example":"1234567890"},"tokenId":{"minLength":1,"type":"string","description":"The processor's token identifier.","example":"abcdefg"},"paymentMethodType":{"$ref":"#/components/schemas/PaymentMethodType"},"cardBrand":{"$ref":"#/components/schemas/CardBrand"},"maskedAccountNumber":{"minLength":1,"type":"string","description":"The masked account number.","example":"XXXXXXXXXXXX4242"}},"additionalProperties":false,"description":"The processor token for backwards compatibility. This is used if the token is stored with the processor."},"ProcessorTransaction":{"type":"object","properties":{"processor":{"type":"string","description":"Internal routing for your merchant account. Specific integration codenames are not published in this documentation.","nullable":true},"transactionId":{"type":"string","description":"The processor's transaction identifier.","nullable":true,"example":"abcdef123456"}},"additionalProperties":false,"description":"Transaction details from the processor."},"TokenStatus":{"enum":["Active","Deleted","Invalid"],"type":"string"},"TransactionEvent":{"type":"object","properties":{"eventName":{"type":"string","description":"The user friendly name of the event.","nullable":true},"eventDate":{"type":"string","description":"The date of the event. The timestamp is in UTC.","format":"date-time"},"transactionEventType":{"$ref":"#/components/schemas/TransactionEventType"}},"additionalProperties":false,"description":"Represents an event that occurred that is relevant to a transaction."},"TransactionEventType":{"enum":["Payment","Authorization","Capture","Refund","Return","Chargeback","ChargebackReversal","Dispute","Settle","Process","Reject","Void","Hold","HoldReleased","InitiatePayment","InitiateAuthorization","Fee","TopUp","Batch"],"type":"string"},"TransactionLineItem":{"type":"object","properties":{"productCode":{"maxLength":15,"type":"string","description":"The code for the product.","nullable":true,"example":"widget123"},"productDescription":{"maxLength":50,"type":"string","description":"The description for the product.","nullable":true,"example":"Shiny new widget. Great for all ages."},"unitPrice":{"maximum":2147483647,"minimum":0.01,"type":"number","description":"The price per unit.","format":"double","nullable":true,"example":51.2},"quantity":{"maximum":2147483647,"minimum":1,"type":"integer","description":"The number of units sold.","format":"int32","nullable":true,"example":3},"taxAmount":{"maximum":2147483647,"minimum":0,"type":"number","description":"The total tax amount for this one line item.","format":"double","nullable":true,"example":0.51},"discountAmount":{"maximum":2147483647,"minimum":0,"type":"number","description":"The total discount amount for this one line item.","format":"double","nullable":true,"example":7.87},"unitOfMeasure":{"maxLength":15,"type":"string","description":"The unit of measure.","nullable":true,"example":"ea"},"commodityCode":{"maxLength":15,"type":"string","description":"The commodity code for this product as defined by https://www.unspsc.org/.","nullable":true,"example":"44121709"}},"additionalProperties":false,"description":"Line item data that is typically needed for Level 2/3 qualification."},"TransactionPaidCustomer":{"required":["amount","id","name"],"type":"object","properties":{"id":{"maxLength":200,"minLength":1,"type":"string","description":"The unique identifier for the customer.","example":"jsmith123"},"name":{"maxLength":150,"minLength":1,"type":"string","description":"The name of the customer.","example":"John Smith"},"amount":{"minimum":0,"type":"number","description":"The amount paid for this customer.","format":"double","example":123.45},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A  <string, string>  dictionary of any application-specific metadata to have stored with the customer.","nullable":true,"example":{"userId":"jsmith","accountId":"123"}}},"additionalProperties":false,"description":"Represents a customer record associated with a transaction."},"TransactionPaidInvoice":{"required":["amount","id"],"type":"object","properties":{"id":{"maxLength":200,"minLength":1,"type":"string","description":"The unique identifier for the invoice.","example":"abcde12345"},"customerId":{"maxLength":200,"type":"string","description":"The name of the customer.","nullable":true,"example":"jsmith123"},"amount":{"minimum":0,"type":"number","description":"The amount paid for this invoice.","format":"double","example":123.45},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A  <string, string>  dictionary of any application-specific metadata to have stored with the invoice.","nullable":true,"example":{"userId":"jsmith","accountId":"123"}}},"additionalProperties":false,"description":"Represents an invoice record associated with a transaction."},"ValidationProblemDetails":{"type":"object","properties":{"type":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"status":{"type":"integer","format":"int32","nullable":true},"detail":{"type":"string","nullable":true},"instance":{"type":"string","nullable":true},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"nullable":true}},"additionalProperties":{}},"CardDeclineReasonEntry":{"type":"object","description":"One Payra-normalized card decline reason.","required":["code","message"],"properties":{"code":{"type":"string","description":"Normalized decline reason code.","example":"12"},"message":{"type":"string","description":"Short decline message.","example":"Not enough balance"},"description":{"type":"string","description":"Additional context for integrators (not for shopper-facing copy)."}}},"CardDeclineReasonCatalog":{"type":"array","description":"Reference catalog of Payra-normalized card decline reasons that may appear in `GetTransactionResponse.errorMessage` on `Reject` events.\n\nThese are normalized decline reasons — not every possible raw issuer or network message.\n\n| Code | Message | Description |\n| --- | --- | --- |\n| 0 | (none) | Sometimes returned alongside an authorized result. When the payment succeeded, ignore this code. |\n| 2 | Refused | The transaction was refused. |\n| 3 | Referral | Referral — contact the issuer for further instructions. |\n| 4 | Acquirer Error | The transaction did not complete due to an error on the acquirer side. |\n| 5 | Blocked Card | The card is blocked and cannot be used. |\n| 6 | Expired Card | The card has expired. |\n| 7 | Invalid Amount | An amount mismatch occurred during processing. |\n| 8 | Invalid Card Number | The card number is incorrect or invalid. |\n| 9 | Issuer Unavailable | The issuer could not be contacted to authorize the transaction. |\n| 10 | Not supported | The issuer or network does not support or allow this transaction type. |\n| 11 | 3D Not Authenticated | 3D Secure authentication was not executed or did not complete successfully. |\n| 12 | Not enough balance | Insufficient funds on the card. |\n| 14 | Acquirer Fraud | Possible fraud detected by the acquirer. |\n| 15 | Cancelled | The transaction was cancelled. |\n| 16 | Shopper Cancelled | The payer cancelled before completing the transaction. |\n| 17 | Invalid Pin | The PIN is incorrect or invalid. |\n| 18 | Pin tries exceeded | Too many incorrect PIN attempts. |\n| 19 | Pin validation not possible | PIN validation could not be performed. |\n| 20 | FRAUD | Pre-authorization risk checks flagged the transaction as fraudulent. |\n| 21 | Not Submitted | The transaction was not submitted correctly for processing. |\n| 22 | FRAUD-CANCELLED | Combined risk checks flagged the transaction as fraudulent after submission. |\n| 23 | Transaction Not Permitted | The issuer, network, or merchant configuration does not permit this transaction. |\n| 24 | CVC Declined | The card security code (CVC/CVV) is invalid. |\n| 25 | Restricted Card | The card is restricted for this transaction or country. |\n| 26 | Revocation Of Auth | The payer revoked authorization for a recurring or scheduled payment. |\n| 27 | Declined Non Generic | Generic issuer decline that does not map to a more specific normalized reason. |\n| 28 | Withdrawal amount exceeded | The amount exceeds the permitted withdrawal limit for the card. |\n| 29 | Withdrawal count exceeded | The payer exceeded the permitted number of withdrawals for the card. |\n| 31 | Issuer Suspected Fraud | The issuer reported the transaction as suspected fraud. |\n| 32 | AVS Declined | Address verification failed. |\n| 33 | Card requires online pin | The issuer requires online PIN entry. |\n| 34 | No checking account available on Card | A checking account is required but not available on the card. |\n| 35 | No savings account available on Card | A savings account is required but not available on the card. |\n| 36 | Mobile pin required | The issuer requires a mobile PIN. |\n| 37 | Contactless fallback | Contactless was attempted but the payer did not complete an alternate entry method. |\n| 38 | Authentication required | Strong customer authentication is required — retry with 3D Secure. |\n| 39 | RReq not received from DS | The authentication outcome could not be communicated by the directory server. |\n| 40 | Current AID is in Penalty Box | The payment network is temporarily unavailable for this application identifier. |\n| 41 | CVM Required Restart Payment | PIN or signature verification is required — retry the transaction. |\n| 42 | 3DS Authentication Error | 3D Secure authentication failed at the network or issuer. |\n| 46 | Transaction blocked to prevent excessive retry fees | Blocked to avoid penalty retry fees from repeated submission of a declining card. |\n| 50 | Token Revoked | The stored payment token was revoked by the payer. |","items":{"$ref":"#/components/schemas/CardDeclineReasonEntry"}},"AchReturnReasonEntry":{"type":"object","description":"One NACHA-standard ACH return reason code.","required":["code","meaning"],"properties":{"code":{"type":"string","description":"Three-character return code.","example":"R01"},"meaning":{"type":"string","description":"Short meaning.","example":"Insufficient funds"},"retryPolicy":{"type":"string","description":"Suggested Payra retry handling for integrators."}}},"AchReturnReasonCatalog":{"type":"array","description":"Reference catalog of ACH return reason codes that may appear in `GetTransactionResponse.errorMessage` on `Return` events (typically `{code} - {meaning}`).\n\nACH failures are return codes, not card-style declines. Returns may arrive asynchronously after an initially authorized debit.\n\n**R01–R33 (common):**\n| Code | Meaning | Suggested retry policy |\n| --- | --- | --- |\n| R01 | Insufficient funds | Retry allowed, but limited — up to 2 retries within 30 days. |\n| R02 | Account closed | Do not retry. Collect a new bank account. |\n| R03 | No account / unable to locate account | Do not retry. Bank details are incorrect. |\n| R04 | Invalid account number | Do not retry. Bank details are invalid. |\n| R05 | Unauthorized debit to consumer account | Do not retry. Suspend recurring debits and resolve authorization. |\n| R06 | Returned per ODFI request | Do not retry automatically. Investigate with the bank. |\n| R07 | Authorization revoked by customer | Do not retry. Obtain new authorization from the customer. |\n| R08 | Payment stopped | Do not retry automatically. Resolve with the customer. |\n| R09 | Uncollected funds | Potentially retry, but treat separately from R01. |\n| R10 | Customer advises not authorized | Do not retry. Treat as an authorization or fraud risk. |\n| R11 | Entry not in accordance with authorization | Do not retry automatically. Review amount, date, and authorization terms. |\n| R12 | Account sold to another DFI | Do not retry automatically. Obtain updated bank details. |\n| R13 | Invalid ACH routing number | Do not retry. Correct routing details. |\n| R14 | Representative payee deceased or unable to continue | Do not retry. Resolve beneficiary or payee details. |\n| R15 | Beneficiary or account holder deceased | Do not retry. Close or update the payment relationship. |\n| R16 | Account frozen / OFAC or legal restriction | Do not retry. Escalate for compliance review. |\n| R17 | File record edit criteria / questionable entry | Do not retry automatically. Correct file or entry data. |\n| R18 | Improper effective entry date | Do not retry until the entry date is corrected. |\n| R19 | Amount field error | Do not retry. Correct the amount in the entry. |\n| R20 | Non-transaction account | Do not retry. The account cannot process ACH. |\n| R21 | Invalid company identification | Do not retry. Correct company identification. |\n| R22 | Invalid individual ID number | Do not retry. Correct individual identification. |\n| R23 | Credit entry refused by receiver | Do not retry automatically. Contact the customer. |\n| R24 | Duplicate entry | Do not retry. Investigate duplicate submission. |\n| R25 | Addenda error | Do not retry. Correct addenda data. |\n| R26 | Mandatory field error | Do not retry. Correct required fields. |\n| R27 | Trace number error | Do not retry. Correct trace number data. |\n| R28 | Routing number check digit error | Do not retry. Correct routing number. |\n| R29 | Corporate customer advises not authorized | Do not retry. Resolve B2B authorization. |\n| R30 | Receiving DFI not participant in check truncation program | Do not retry automatically. Investigate with the bank. |\n| R31 | Permissible return entry (CCD/CTX) | Do not retry automatically. Coordinate with the ODFI. |\n| R32 | RDFI non-settlement | Do not retry automatically. Investigate settlement status. |\n| R33 | Return of XCK entry | Do not retry automatically. Review XCK eligibility. |\n\n**R34–R85 (extended):**\n| Code | Meaning |\n| --- | --- |\n| R34 | Limited participation DFI |\n| R35 | Return of improper debit entry |\n| R36 | Return of improper credit entry |\n| R37 | Source document presented |\n| R38 | Stop payment on source document |\n| R39 | Improper source document |\n| R40 | Return of ENR entry by federal agency |\n| R41 | Invalid transaction code (ENR) |\n| R42 | Routing number / check digit error (ENR) |\n| R43 | Invalid DFI account number (ENR) |\n| R44 | Invalid individual ID number (ENR) |\n| R45 | Invalid individual or company name (ENR) |\n| R46 | Invalid representative payee indicator (ENR) |\n| R47 | Duplicate enrollment (ENR) |\n| R50 | State law affecting RCK |\n| R51 | Item is ineligible (RCK) |\n| R52 | Stop payment (RCK) |\n| R53 | Paper item presented (RCK) |\n| R61 | Misrouted return |\n| R62 | Return of erroneous or reversing debit |\n| R67 | Duplicate return |\n| R68 | Untimely return |\n| R69 | Field error(s) |\n| R70 | Permissible return claim not agreed |\n| R71 | Misrouted dishonored return |\n| R72 | Untimely dishonored return |\n| R73 | Timely original return |\n| R74 | Corrected return |\n| R75 | Original return not a duplicate |\n| R76 | No errors found |\n| R77 | Non-acceptance of R62 dishonored return |\n| R80 | IAT coding errors |\n| R81 | IAT non-participant in foreign network |\n| R82 | IAT invalid foreign receiving DFI |\n| R83 | IAT foreign receiving DFI unable to settle |\n| R84 | IAT entry not processed by gateway |\n| R85 | IAT incorrect coding |","items":{"$ref":"#/components/schemas/AchReturnReasonEntry"}}},"securitySchemes":{"basic":{"type":"http","scheme":"basic"}}},"servers":[{"url":"https://staging-paymentsapi.payra.com","description":"Payment processor API (`/v1/...`) via this host (forwarded to the configured processor). Public docs list **tokens** and **transactions** (pay, authorize, capture, void, refund)."}]}