Account Payouts
Execute a single Account Payout to a nominated beneficiary bank account.
Authorization: {your_credentials} Content-Type: application/vnd.worldpay.account-payouts-v2+json
Standard payout
Payout request
POST
https://try.access.worldpay.com/payouts/accounts/single
Payout request body
{ "requester": { "instructingTreasuryId": "000055", "entity": "000055", "apiRequestReference": "TestReference123" }, "transactionReference": "123456", "countryCode": "GB", "sourceCurrency": "GBP", "sourceAmount": 0, "targetCurrency": "GBP", "targetAmount": 10, "narrative": "Ref: 123456", "purposeOfPaymentCode": "WPPAYR", "fastPayment": "Y", "purposeOfPaymentNarrative": "Salary payment", "transactionTypeCode": "TT04", "channel": "WIRE", "quoteId": "", "scheduleDate": "2022-12-31", "expandableKeyValuePairs": { "RemitterSourceOfIncome": "salary", "BeneficiaryNationality": "British" }, "bankDetails": { "beneficiaryAccountTypeCode": "AC01", "beneficiaryAccountNumber": "12345677", "iban": "GB29NWBK60161331926819", "branchCode": "300", "bankCode": "404433", "swiftBic": "BUKBGB22", "bankName": "Bank of Sale", "address": { "street": "3 Rock Lane", "additionalAddressLine": "An Area", "city": "Sale", "state": "Cheshire", "postcodeOrZipCode": "P55 T1B", "countryCode": "GB" } }, "parties": [ { "partyId": "", "customerPartyId": "customer123", "partyTypeCode": "PT03", "personalDetails": { "typeCode": "PD02", "titleCode": "TI01", "firstName": "John", "middleName": "Johno", "lastName": "Johnson", "dateOfBirth": "1993-12-31", "email": "john@domain.com", "telephony": [ { "phoneNumber": "01375841159", "prefix": "44" } ], "identity": [ { "identityTypeCode": "ID01", "identityNumber": "123456789", "issuingInstitution": "IPS", "issuingCountry": "GB", "startDate": "2013-05-22", "endDate": "2014-05-21" } ] }, "address": { "street": "1 Some Street", "additionalAddressLine": "Some Neighborhood", "city": "Some City", "state": "Some State", "postcodeOrZipCode": "S14 T4R", "countryCode": "GB", "addressTypeCode": "AD01", "residentialStatusCode": "RS01" } }, { "partyId": "", "customerPartyId": "", "partyTypeCode": "PT01", "personalDetails": { "typeCode": "PD01", "companyName": "testCompanyInc", "dateOfBirth": "1993-12-31", "email": "john@domain.com", "telephony": [ { "phoneNumber": "01375841159", "prefix": "44" } ], "identity": [ { "identityTypeCode": "ID01", "identityNumber": "123456789", "issuingInstitution": "IPS", "issuingCountry": "GB", "startDate": "2013-05-22", "endDate": "2014-05-21" } ] }, "address": { "street": "1 Some Street", "additionalAddressLine": "Some Neighborhood", "city": "Some City", "state": "Some State", "postcodeOrZipCode": "S14 T4R", "countryCode": "GB", "addressTypeCode": "AD01", "residentialStatusCode": "RS01" } } ] }
Parameters
Permitted special characters for appropriate fields, as well as preset values for specific fields are listed in the Appendix.
Field Name | Description | Data Type/Format | Required? | Min-Max Length | Validation Criteria |
---|---|---|---|---|---|
requester.instructingTreasuryId | Unique ID given during the onboarding process. It indicates who instructs the payout. The instructingTreasuryId is the same as the entity, if the payout request is being instructed by the ultimate consumer itself. | AN | ✅ | 6-6 | The format of the ID must be valid. The ID is checked against the basic auth credentials supplied in the Authorization header. Special characters are restricted. |
requester.entity | Unique consumer ID given during the onboarding process. It indicates the consumer who instructs the payment. The instructingTreasuryId is the same as the entity, if the payout request is being instructed by the ultimate consumer itself. | AN | ✅ | 6-6 | The ID supplied is checked to be valid. It must also be authorized by the token provided in the Authorization header. This may be the same as the instructingTreasuryId or a sub-merchant of it. Special characters are restricted. |
requester.apiRequestReference | Unique reference for the request. This field along with instructingTreasuryId is used for idempotency check. | String | ✅ | 1-35 | Must be unique and 1-35 characters. Special characters are allowed |
transactionReference | Merchant's unique reference for the payout request. | AN | ✅ | 6-50 | Special characters are allowed. |
countryCode | countryCode of the payout destination. | A | ✅ | 2-2 | ISO 3166-1 Alpha-2 code |
sourceCurrency | Source currency for the payout. | A | ✅ | 3-3 | ISO 4217 Valid currency codes. |
sourceAmount | Source currency amount (if target amount is not stated, this amount is used). | N | Conditional | 1-10 | Must be a positive value up to 2 decimal places. |
targetCurrency | Target currency sent in the payout request (if different to source currency, Foreign Exchange (FX) is applied). | A | ✅ | 3-3 | ISO 4217 Valid [currency codes](/products/access/reference/useful-tables.md#currency-codes. |
targetAmount | Target currency amount (if source amount is not specified, this amount is used). | N | Conditional | 1-10 | Must be a positive value up to 2 decimal places. |
narrative | Reference that may appear on beneficiary statements. | String | ❌ | 6-50 | Special characters are allowed. |
purposeOfPaymentCode | The code that represents the purpose of the payout. This is mandatory for some payout routes - please check country specific requirements. | A | ✅ | Value | For the full list of allowed values see the appendix. |
fastPayment | Flag for a fast payment - If value is provided, it must always be 'Y'. | A | ✅ | Value | The value supplied for the field must be "Y", blank or null. Else the field can be not provided. |
purposeOfPaymentNarrative | Description for purpose of payment. | String | ✅ | 1-35 | Special characters are allowed. |
transactionTypeCode | Type of transaction code (for example 'TT04' that refers to 'Business to Customer'). Mandatory for some payout routes - please check country specific requirements. | AN | ✅ | Value | For the full list of allowed values see the appendix. |
channel | Preferable channel of the payout (for example 'WIRE'). | A | ❌ | Value | For the full list of allowed values see the appendix. |
quoteId | ID of the FX quote for the payment request. This must be a valid, active quote which is for the same source and target currencies as the payout request. It must have valid intent of "FORWARD FX" or "PAYOUT". | String | ❌ | ||
scheduleDate | Scheduled date of the payout request. | date | ❌ | 10-10 | Must be a Gregorian calendar date with ISO format 8601 YYYY-MM-DD. |
expandableKeyValuePairs | JSON object of key-value pairs. Additional data in the form of key value pairs. The keys and values that might be required to process an account payout to a specific destination are communicated during the onboarding process. | AN | ❌ | Duplicate key names are not allowed. | |
bankDetails.beneficiaryAccountTypeCode | Type of account code (for example 'AC01' that refers to 'Checking'). | AN | ❌ | Value | For the full list of allowed values see the appendix. |
bankDetails.beneficiaryAccountNumber | Beneficiary bank account number. Either account number or IBAN must be provided. | String | Conditional | 1-35 | Special characters are allowed |
bankDetails.iban | Beneficiary IBAN. Either account number or IBAN must e provided. | AN | Conditional | 1-34 | |
bankDetails.bankCode | Beneficiary bank account bank code. | String | ❌ | 1-35 | Special characters are allowed. |
bankDetails.branchCode | Beneficiary bank account branch code. | String | ❌ | 1-35 | Special characters are allowed. |
bankDetails.swiftBic | Beneficiary bank account SWIFT/BIC | AN | ❌ | 8 or 11 | |
bankDetails.bankName | Beneficiary bank name | String | ✅ | 1-35 | Special characters are allowed. |
bankDetails.address.street | Beneficiary bank address: street | String | ❌ | 1-35 | Special characters are allowed. |
bankDetails.address.additionalAddressLine | Beneficiary bank additional address line. | String | ❌ | 1-35 | Special characters are allowed. |
bankDetails.address.city | Beneficiary bank address: City | String | ❌ | 1-35 | Special characters are allowed. |
bankDetails.address.state | Beneficiary bank address: State | String | ❌ | 2-35 | Special characters are allowed. |
bankDetails.address.postcodeOrZipCode | Beneficiary bank address: Postcode/ZipCode | String | ❌ | 1-20 | Special characters are allowed. |
bankDetails.address.countryCode | Beneficiary bank address: countryCode | A | ❌ | 2-2 | ISO 3166-1 Alpha-2 code. |
parties.partyId | Id of the party for the payout request. | String | ❌ | 36-36 (Guid with Hyphens only) | {{$guid}} Example: 1E016F5E-9D4A-49E7-B44C-A4C8AAE8290D |
parties.customerPartyId | The ID of the remitter: Domain ID, Account Number, Tax ID, BIC, Internal Customer ID or any other numerical or alphanumerical unique identifier of the customer where the payout request has originated. | AN | ❌ | 1-35 | Special characters are restricted. |
parties.partyTypeCode | Party type code (for example 'PT03' that refers to beneficiary) | AN | ✅ | Value | For the full list of allowed values see the appendix. |
parties.personalDetails.typeCode | Entity description code for the party (for example 'PD02' that refers to 'Individual'). | AN | Conditional | Value | For the full list of allowed values see the appendix. |
parties.personalDetails.titleCode | Title code for the Individual (applicable when party entity type is "Individual"). Must not be provided when type is not “Individual”. | AN | Conditional | Value | For the full list of allowed values see the appendix. |
parties.personalDetails.companyName | Name of the organization if not an individual. Mandatory where party entity type is "Institution", "Government" or "Company". Must not be provided when type is 'Individual'. | String | Conditional | 1-140 | Special characters are allowed. |
parties.personalDetails.firstName | First name of the party. Mandatory where party entity type is "Individual". | AN | Conditional | 1-50 | Special characters are allowed. See formatting rules |
parties.personalDetails.middleName | Middle name of the party (applicable when party entity type is "Individual"). | AN | ❌ | 1-50 | Special characters are allowed. See formatting rules |
parties.personalDetails.lastName | Last name of the party. Mandatory where party entity type is "Individual". | AN | Conditional | 1-50 | Special characters are allowed. See formatting rules |
parties.personalDetails.dateOfBirth | Date of birth or date of incorporation of the organization. | Date | ❌ | 10-10 | Must be a Gregorian calendar date with ISO 8601 format YYYY-MM-DD. |
parties.personalDetails.email | E-mail address of the party. | String | ❌ | A valid e-mail address format. | |
parties.personalDetails.telephony.phoneNumber | Phone number of the party. Mandatory if, 'prefix' has been provided. | N | Conditional | 1-20 | Special characters are restricted. |
parties.personalDetails.telephony.prefix | Phone dialling country code of the party. Mandatory if, 'phoneNumber' has been provided. | N | Conditional | 1-3 | Special characters are restricted. International country calling code following ITU-T standard. Must be 1-3 digits e.g. "44" or "420" |
parties.personalDetails.identity.identityTypeCode | Type of identification. Mandatory if, 'identity number' is populated. | AN | Conditional | Value | For the full list of allowed values see the appendix. |
parties.personalDetails.identity.identityNumber | Identification number that is presented in the identification type. Mandatory if, "IdentityTypeCode" is populated. | String | Conditional | 1-35 | Special characters are allowed. |
parties.personalDetails.identity.issuingCountry | countryCode of identification type origin. Mandatory if, "identityTypeCode"/"identityNumber" is populated. | A | Conditional | 2-2 | ISO 3166-1 Alpha-2 code. |
parties.personalDetails.identity.issuingInstitution | Issuing institution that provided identification type. | AN | ❌ | 1-35 | Special characters are allowed. Can't be provided if the conditional fields in the identity section are missing. |
parties.personalDetails.identity.startDate | Identification type start date. | Date | ❌ | 10-10 | Must be a Gregorian calendar date with ISO 8601 format YYYY-MM-DD. Can't be provided if conditional fields in the identity section are missing. |
parties.personalDetails.identity.endDate | Identification type end date. | Date | ❌ | 10-10 | Must be a Gregorian calendar date with ISO 8601 format YYYY-MM-DD. Can't be provided if conditional fields in the identity section are missing. |
parties.address.addressTypeCode | Type of party address code (for example 'AD02' that refers to 'Business'). | AN | ❌ | Value | For the full list of allowed values see the appendix. |
parties.address.street | Party address: street | String | ❌ | 1-35 | Special characters are allowed. |
parties.address.additionalAddressLine | Party additional address line. | String | ❌ | 1-35 | Special characters are allowed. |
parties.address.city | Party address: City | String | ❌ | 1-35 | Special characters are allowed. |
parties.address.state | Party address: State | String | ❌ | 2-35 | Special characters are allowed. |
parties.address.postcodeOrZipCode | Party address: Postcode/ZipCode | String | ❌ | 1-20 | Special characters are allowed. |
parties.address.countryCode | Party address: countryCode | A | ❌ | 2-2 | ISO 3166-1 Alpha-2 code. |
parties.address.residentialStatusCode | Type of residency code (for example 'RS01' that refers to 'Resident). | AN | ❌ | Value | For the full list of allowed values see the appendix. |
Response:
Successful response example
{ "ubr": "PZ000EC4", "apiRequestReference": "UniqueCustomerReference", "instructingTreasuryId": "001948" }
Error response example
{ "errors": { "callerId": [ "CallerId is mandatory" ] }, "httpStatusCode": 400, "customCode": "SPAB01", "message": "There was an error in the request" }
Error response codes
General
HTTP code | Custom code | Message | Scenario |
---|---|---|---|
202 | N/A | N/A | Payment request accepted |
200 | N/A | N/A | Payment request already submitted and accepted |
400 | SPAB01 | There was an error in the request | Caller ID exceeds 100 characters limit |
400 | SPAV01 | An API version is required, but was not specified. | Version not specified or incorrect / Provided versions are conflicting |
401 | SPAU02 | Unauthorized | The token has expired |
401 | SPAU03 | Unauthorized | The edge token is not trusted |
401 | SPAU14 | Unauthorized | Unauthorized request |
401 | SPAE11X | Unauthorized request | Unauthorized request |
404 | SPAN16 | Unable to find external consumer data | Consumer with subject-domain combination not found |
500 | SPAU04 | Unexpected issue | Unexpected issue. Please try again |
401 | SPAU07A | Unauthorized request | Token is empty |
401 | SPAU06A | Unauthorized request | Token validation failed |
401 | SPAU06A | Unauthorized request | Token has expired |
401 | SPAU10 SPAU07B | Authentication failed | Token validation failed |
500 | SPAE12 SPAE11 SPAE11A SPAE11B SPAE11C SPAE11D SPAE11E | Unexpected Issue. Please try again | Internal Server Error |
415 | N/A | Unsupported Media Type | Invalid Content Type Value |
403 | SPAF07 | Consumer isn't allowed to instruct payouts | Consumer isn't allowed to instruct payout using the entitlements that were provided in the token. |
403 | SPAF18 | Authorisation failed for this domain | Consumer isn't allowed to instruct payout using the entitlements that were provided in the token. |
422 | N/A | Quote validation failed | The quote supplied has currencies which does not match those supplied in the token, or has an intent which is other than "PAYOUT" or "FORWARD FX". |
422 | N/A | Quote Expired | The quote supplied is expired. |
422 | N/A | Contract not Active | The quote supplied cannot yet be used. This will only be the case for quotes with intent "FORWARD FX". |
Note
In the event of 401-500 range HTTP code error response please contact your Implementation Manager.
Schema validation responses
All schema validation responses have the same format of httpStatusCode
, customCode
and message
. Response code and message values differ depending on the validation error.
HTTP code | Custom code | Example message | Scenario |
---|---|---|---|
400 | SPAB05 | The length of 'Company Name' must be 140 characters or fewer. You entered 475 characters. | Property length is incorrect ('or fewer' scenario). |
400 | SPAB05 | 'Unique Payout Id' must be between 6 and 50 characters. You entered 2 characters. | Property length is incorrect ('between' scenario). |
400 | SPAB05 | 'Issuing Country' is not in the correct format. | Property is not in a correct format. |
400 | SPAB05 | sourceAmount must be a positive value. | Amount is not a positive value. |
400 | SPAB05 | Only one of the fields targetAmount/sourceAmount must be provided. | Both source/target amounts have been given. |
400 | SPAB05 | The 'Fast Payment' field can only be 'Y' or blank. | Value invalid. |
400 | SPAB05 | transactionTypeCode field does not allow free-format text. One of the following values only to be used in Transaction Type: TT01,TT02,TT03,TT04.** | Value invalid. |
400 | SPAB05 | One of the following values only to be used in TypeCode: PD01, PD02, PD03, PD04, PD99. | Value invalid. |
400 | SPAB05 | 'Full Name' is not in the correct format. | Name Regex validation failed. |
400 | SPAB05 | titleCode is not allowed when the typeCode is set to PD01/PD03/PD04. | Property restricted with this type of customer. |
400 | SPAB05 | companyName must not be blank when typeCode is set to PD01. | Property restricted with this is type of customer. This applies if Individual data is provided but type is set to Company, Government, or Institution |
400 | SPAB05 | companyName is not allowed when the type is set to Individual. | Property restricted with this is type of customer. This applies if Individual data is provided but typeCode is set to PD01, PD04 or PD02.** **This applies to parties which are beneficiary & remitter (partyTypeCode PT01 and PT03). |
400 | SPAB05 | DateOfBirth is invalid. Please use Gregorian calendar dates with ISO 8601 format YYYY-MM-DD. | Invalid Date format. |
400 | SPAB05 | 'Bank name' must not be empty. | Mandatory section/field is missing. |
400 | SPAB05 | phoneNumber must consist of numbers only. | The property can be only Numerical. |
400 | SPAB05 | customerPartyId must be between 1-35 characters length. | Property length is incorrect (between scenario with no indication of provided value). |
400 | SPAB05 | 'IBAN' is not in the correct format. | Invalid format of the property. |
400 | SPAB05 | IBAN or 'Account Number' Must be present. | Both IBAN/Account Number missing |
400 | SPAB05 | prefix must be provided if the phoneNumber field is populated. | Condition of linked fields not met. |
400 | SPAB05 | identityTypeCode must be provided if any of the other Identity block fields are populated. | Condition of linked fields not met. If any of the identity block fields are given then all mandatory identity BLOCK fields should be provided. If there is no intention of providing identity fields then the whole BLOCK should be removed from the payload.** |
400 | SPAB05 | When expandableKeyValuePairs are provided. | There must not be duplicate key names. |
400 | SPAB05 | When expandableKeyValuePairs are provided but property value is not a JSON object containing key value pairs. | Property value if provided must be a JSON object containing key value pairs. |