With the PSD2 Bulk Payment Initiation API, Certified Payment Initiation Service Providers (PISPs) can create a seamless journey for your users, while providing them full access control throughout the process. You can request the account holder's consent by using our OAuth 2.0 Services API.
You can initiate bulk payments on behalf of your users using a Rabobank payment account. You can also retrieve the status of the initiated bulk payment in a PAIN.002 file format to keep track of the payments.
This API can only be used through your web service.
The API is suited for payment files (PAIN.001), which may contain batches with (urgent) Euro Payments (SEPA), and (urgent) Cross Border Payments (non-SEPA).
For more information, read PSD2 Bulk Payment API flow.
Relevant scope for oauth2 access code flow
Scope name | Description |
---|---|
pi.bulk.read-write | Allows to create bulk payment initiations for the selected account |
Make sure that you use the Authorization and Token URL as provided by the oAuth2 Services
Rate Limiting
A default rate limit plan is set for all APIs. The rate limit can be shared or individual (defined per operation). The table below describes the rate limiting for this product.
Operation | Type | Limit (API calls / s) | Counts towards shared limit |
---|---|---|---|
POST /v3/bulk-payments/pain.001-sepa-credit-transfers | Shared | 5 | Yes |
GET /v3/bulk-payments/pain.001-sepa-credit-transfers/{PaymentId}/status | Shared | 5 | Yes |
All (premium) Oauth calls | Shared | 5 | Yes |
Requests
The POST Payment and GET Status requests must contain a digital signature. You can generate this digital signature using the private key of your certificate. For the Sandbox environment, you can use an example certificate available in the Signing documentation.
This call requires a PAIN001 file, read more about it here.
NOTE: Please use the Authorization and Token URL as provided by the oAuth2 Services.
Response
POST BulkPayment transaction for SEPA credit transfer.
You can initiate a bulk credit transfer payment using a POST payment request.
After receiving the payment, a response of RCVD or RJCT is returned. You can use the status endpoint to get the latest status of the payment.
\{
Ā Ā Ā Ā Ā <?xml version="1.0" encoding="UTF-8"?>
Ā Ā Ā Ā Ā <InitiatedTransactionResponse>
Ā Ā Ā Ā Ā Ā Ā Ā Ā <_links>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <status>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <href>/payments/bulk-payment-initiation/buts/v3/bulk-payments/pain.001-sepa-credit-transfers/123e4567-e89b-42d3-a456-556642444321/status</href>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā </status>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <scaRedirect>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <href>https://bankieren-acpt2.rabobank.nl/klanten/bedrijven/internetbankieren/betalensparen/opdrachten_ondertekenen?bulkPaymentInitiationId=123e4567-e89b-42d3-a456-556642444321</href>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā </scaRedirect>
Ā Ā Ā Ā Ā Ā Ā Ā Ā </_links>
Ā Ā Ā Ā Ā Ā Ā Ā Ā <paymentId>123e4567-e89b-42d3-a456-556642444321</paymentId>
Ā Ā Ā Ā Ā Ā Ā Ā Ā <transactionStatus>RCVD</transactionStatus>
Ā Ā Ā Ā Ā </InitiatedTransactionResponse>
}
If a required header is not provided or blank, then the status of the response will be 400 BAD REQUEST and the response will contain the missing header name. For example if the header 'Signature' is missing, then the response will be:
`Ā Ā Ā Ā Ā Ā \<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Ā Ā Ā Ā Ā Ā <ErrorResponse>
Ā Ā Ā Ā Ā Ā Ā Ā <errorMessages>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <category>WARNING</category>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <code>FORMAT_ERROR</code>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <text>Required header 'signature' is not present</text>
Ā Ā Ā Ā Ā Ā Ā Ā </errorMessages>
Ā Ā Ā Ā Ā Ā </ErrorResponse>
Ā Ā Ā Ā Ā Ā `Ā
Below you can find all supported test scenarios. In order to use these scenarios, call the API by using the examples for the fields provided in the endpoint description for POST/sepa-credit-transfers.
ScenarioĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | RequestĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | RemarkĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
---|---|---|
201 CREATED *Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Valid Request with valid PAIN001 XMLĀ Ā Ā Ā Ā Ā Ā Ā | multipart/form-data with payload variable name should be xml_sctĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
400 BAD REQUEST *Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Send Request with required header missingĀ Ā Ā | Request without X-Request_ID(blank) or No-DIGESTĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
400 BAD REQUEST *Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | PAIN001 is missingĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
400 BAD REQUEST *Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | PAIN001 is emptyĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
401 UnauthorisedĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Send Request with invalid signatureĀ Ā Ā Ā Ā Ā Ā Ā Ā | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
401 UnauthorisedĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Send Request with invalid certificateĀ Ā Ā Ā Ā Ā Ā | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
401 UnauthorisedĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Send Request with invalid digestĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
401 UnauthorisedĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | If there is no consent for the used accounts | No permissions found for this product typeĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
500 Internal server errorĀ Ā Ā Ā Ā Ā Ā Ā | Server issue with the account consentĀ Ā Ā Ā Ā Ā Ā | Internal Server Error, Permissions for this product type cannot be accessed |
405 Method Not AllowedĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Use PUT instead of POST methodĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
Note: These codes are for Sandbox only.
For these test scenario's use the following values for the Digest and Signature header:
ScenarioĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Digest + SignatureĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
---|---|
201 CREATEDĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
|
400 Bad Request, X-Request-IDĀ Ā Ā |
|
400 Bad Request, PAIN001 missing |
|
400 Bad Request, PAIN001 emptyĀ Ā |
|
GET Payment Status for Bulk Payment SEPA credit transfer.
You can retrieve the status information for a payment initiation using a GET status request.
`Ā Ā Ā {
Ā Ā Ā Ā Ā <?xml version="1.0" encoding="UTF-8"?>
Ā Ā Ā Ā Ā <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
Ā Ā Ā Ā Ā Ā Ā Ā Ā <CstmrPmtStsRpt>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <GrpHdr>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <MsgId>RABO-PAIN002-PO-0000000127720675409</MsgId>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <CreDtTm>2019-09-23T14:41:48.459</CreDtTm>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <InitgPty>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <Id>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgId>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <BICOrBEI>RABONL2U</BICOrBEI>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā </OrgId>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā </Id>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā </InitgPty>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā </GrpHdr>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlGrpInfAndSts>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlMsgId>PSD2 23-09-2019 1</OrgnlMsgId>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlMsgNmId>PAIN.001.001.03</OrgnlMsgNmId>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlCreDtTm>2019-09-23T12:01:29.123</OrgnlCreDtTm>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlNbOfTxs>1</OrgnlNbOfTxs>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlCtrlSum>3.33</OrgnlCtrlSum>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <GrpSts>ACTC</GrpSts>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā </OrgnlGrpInfAndSts>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlPmtInfAndSts>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlPmtInfId>PSD2 23-09-2019 1</OrgnlPmtInfId>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlNbOfTxs>1</OrgnlNbOfTxs>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <OrgnlCtrlSum>3.33</OrgnlCtrlSum>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā <PmtInfSts>ACTC</PmtInfSts>
Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā </OrgnlPmtInfAndSts>
Ā Ā Ā Ā Ā Ā Ā Ā Ā </CstmrPmtStsRpt>
Ā Ā Ā Ā Ā </Document>
Ā Ā Ā }
Ā Ā Ā `
Some scenarios, as mentioned below, require specific paymentId(s) in the URL, example: (/payments/bulk-payment-initiation/buts/v3/bulk-payments/pain.001-sepa-credit-transfers/{paymentId}/status) to get the mentioned responses.
To view the GET parameters, read the endpoint description for GET/pain.001-sepa-credit-transfers/{paymentId}/status
ScenarioĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | responseĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | payment-idĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | remarkĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
---|---|---|---|
200 OKĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | PAIN002 fileĀ Ā Ā Ā Ā Ā Ā Ā | 123e4567-e89b-42d3-a456-556642440015 | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
200 OKĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | RCVDĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | 123e4567-e89b-42d3-a456-556642440007 | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
200 OKĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | RJCTĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | 123e4567-e89b-42d3-a456-556642440008 | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
404 NOT FOUNDĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | 123e4567-e89b-42d3-a456-556642440005 | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
400 BAD REQUEST *Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Header: X-Request-ID which is sent in TPP Request is missing.Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
Note: These codes are for Sandbox only.
*) For this test scenario use the following values for the Digest and Signature header:
ScenarioĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā | Digest + SignatureĀ Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā |
---|---|
400 Bad Request - X-Request-IDĀ Ā |
|
Here is a description of the expected response statuses:
Statuses present in the POST response
RCVD: Payment file received RJCT: Payment file rejected
Statuses present in the GET response
Interchange status/group status:
ACTC: Payment succesfully created
RJCT: Payment rejected.
Batch status:
RCVD: Payment batch received.
ACTC: Awaiting authorization. ACCP: Payment authorized. ACSC: Payment processed.
RJCT: Payment rejected, expired, or cancelled.
PDNG: Payment pending.
Transaction status on individual payment in the batch:
RJCT: Payment rejected. ACCP: Payment authorized. CANC: Payment withdrawn. PDNG: Payment pending. ACSC: Payment processed.