# Post multi-leg payment (deprecated) Enable users to submit a payment with multiple legs to the platform. The payments are processed asynchronously and must contain at least two legs, but no more than twenty. The payload contains `debits` and `credits` lists. These lists include legs that follow the requirements of `credit` and `debit` objects in the [Post payment](https://developers.pismo.io/pismo-docs/reference/corporate-v2-post-payments) endpoint. For information about multi-leg payments, see the [Post multi-leg payment](https://developers.pismo.io/pismo-docs/docs/payment-overview#post-multi-leg-payment) section in _Payment overview_. NOTES: - To find the correct reason IDs, refer to the [List account status reasons](https://developers.pismo.io/pismo-docs/reference/get-accounts-v1-accounts-status-reasons) endpoint. - This endpoint does not support forced transfers from an earmark balance. - For error handling, see [Error handling mechanism](https://developers.pismo.io/pismo-docs/docs/payment-overview#error-handling-mechanism) in _Payment overview_. Each leg generates the following events: - [Platform authorization created](https://developers.pismo.io/events/docs/platform-authorization-platform-authorization-1) - [Account balance changed](https://developers.pismo.io/events/docs/account-balances-balance-change-1) - [Account balance changed (Availables)](https://developers.pismo.io/events/docs/availables-change-available-1) - [Accounting entry created](https://developers.pismo.io/events/docs/accounting-entry-creation-1) - If flex controls are configured, a [Flex control evaluated](https://developers.pismo.io/events/docs/rules-evaluation-requested-1) event is triggered. Additionally, the following events are generated for multi-leg payments: - [Multi-leg payment lifecycle created](https://developers.pismo.io/events/docs/corporate-multi-leg-creation-1) - [Multi-leg payment lifecycle status changed](https://developers.pismo.io/events/docs/corporate-multi-leg-status-change-1) See [Data and reporting](doc:data-reporting-overview) for more information about events and setting up event notifications. # OpenAPI definition ```json { "openapi": "3.0.0", "info": { "title": "Banking - Transaction banking", "version": "0.9.0", "description": "Transaction banking API", "contact": { "name": "API Support", "url": "https://developers.pismo.io/support/" }, "license": { "name": "Copyright Pismo" } }, "servers": [ { "url": "https://sandbox.pismolabs.io", "description": "Sandbox API server for testing" } ], "security": [ { "BearerAuth": [] } ], "tags": [ { "name": "Payments", "description": "Payment endpoints supporting external accounts" } ], "components": { "schemas": { "BusinessDate": { "type": "string", "format": "date", "description": "Specifying a `business_date` value impacts the account balance history.
\nNotes:\n - The business date is in ISO 8601 format.\n - The business date allows users to designate the balance history cycle in which a payment is posted.\n - You can specify a `business_date` within the current working day or up to one working day before or after.\n", "example": "2023-03-09" }, "CreditLegV2ErrorResponse": { "title": "CreditLegV2ErrorResponse", "type": "object", "allOf": [ { "$ref": "#/components/schemas/CreditLegV2Response" }, { "type": "object", "properties": { "errors": { "type": "array", "items": { "$ref": "#/components/schemas/ErrorResponse" }, "example": [] } } } ] }, "CreditLegV2Request": { "title": "CreditLegV2Request", "type": "object", "required": [ "amount", "currency", "external_account_id" ], "properties": { "amount": { "$ref": "#/components/schemas/TransactionAmount" }, "currency": { "$ref": "#/components/schemas/Currency" }, "external_account_id": { "$ref": "#/components/schemas/ExternalAccountId2" }, "processing_code": { "$ref": "#/components/schemas/ProcessingCode2" }, "soft_descriptor": { "$ref": "#/components/schemas/SoftDescriptor" }, "force_post": { "$ref": "#/components/schemas/ForcePostCredit" }, "validation_rules": { "$ref": "#/components/schemas/ValidationRules" }, "payment_datetime": { "$ref": "#/components/schemas/PaymentDatetime" }, "business_date": { "$ref": "#/components/schemas/BusinessDate" }, "skip_account_date_validation": { "$ref": "#/components/schemas/SkipAccountDateValidation" } } }, "CreditLegV2Response": { "title": "CreditLegV2Response", "type": "object", "properties": { "external_account_id": { "$ref": "#/components/schemas/ExternalAccountId2" }, "amount": { "$ref": "#/components/schemas/TransactionAmount" }, "processing_code": { "$ref": "#/components/schemas/ProcessingCode2" }, "soft_descriptor": { "$ref": "#/components/schemas/SoftDescriptor" }, "currency": { "$ref": "#/components/schemas/Currency" }, "force_post": { "$ref": "#/components/schemas/ForcePostCredit" }, "validation_rules": { "$ref": "#/components/schemas/ValidationRules" }, "payment_datetime": { "$ref": "#/components/schemas/PaymentDatetime" }, "business_date": { "$ref": "#/components/schemas/BusinessDate" }, "skip_account_date_validation": { "$ref": "#/components/schemas/SkipAccountDateValidation" } } }, "Currency": { "type": "string", "description": "3-letter code in ISO 4217-compliant format for the currency used in the transaction.", "maxLength": 3, "minLength": 3, "example": "USD" }, "DebitLegV2ErrorResponse": { "title": "DebitLegV2ErrorResponse", "type": "object", "allOf": [ { "$ref": "#/components/schemas/DebitLegV2Response" }, { "type": "object", "properties": { "errors": { "type": "array", "items": { "$ref": "#/components/schemas/ErrorResponse" }, "example": [] } } } ] }, "DebitLegV2Request": { "title": "DebitLegV2Request", "type": "object", "required": [ "amount", "currency", "external_account_id" ], "properties": { "amount": { "$ref": "#/components/schemas/TransactionAmount" }, "currency": { "$ref": "#/components/schemas/Currency" }, "external_account_id": { "$ref": "#/components/schemas/ExternalAccountId2" }, "processing_code": { "$ref": "#/components/schemas/ProcessingCode2" }, "soft_descriptor": { "$ref": "#/components/schemas/SoftDescriptor" }, "force_post": { "$ref": "#/components/schemas/ForcePostDebit" }, "validation_rules": { "$ref": "#/components/schemas/ValidationRules" }, "payment_datetime": { "$ref": "#/components/schemas/PaymentDatetime" }, "business_date": { "$ref": "#/components/schemas/BusinessDate" }, "skip_account_date_validation": { "$ref": "#/components/schemas/SkipAccountDateValidation" }, "earmark_id": { "$ref": "#/components/schemas/EarmarkIdWithdrawal" } } }, "DebitLegV2Response": { "title": "DebitLegV2Response", "type": "object", "properties": { "external_account_id": { "$ref": "#/components/schemas/ExternalAccountId2" }, "amount": { "$ref": "#/components/schemas/TransactionAmount" }, "processing_code": { "$ref": "#/components/schemas/ProcessingCode2" }, "soft_descriptor": { "$ref": "#/components/schemas/SoftDescriptor" }, "currency": { "$ref": "#/components/schemas/Currency" }, "force_post": { "$ref": "#/components/schemas/ForcePostDebit" }, "validation_rules": { "$ref": "#/components/schemas/ValidationRules" }, "payment_datetime": { "$ref": "#/components/schemas/PaymentDatetime" }, "business_date": { "$ref": "#/components/schemas/BusinessDate" }, "skip_account_date_validation": { "$ref": "#/components/schemas/SkipAccountDateValidation" }, "earmark_id": { "$ref": "#/components/schemas/EarmarkIdWithdrawal" } } }, "EarmarkIdWithdrawal": { "type": "string", "description": "ID of the earmark from which the amount is withdrawn. The earmark ID is generated by the [Create Earmark](https://developers.pismo.io/pismo-docs/reference/post-corporate-v2-earmarks) endpoint.", "maxLength": 60, "minLength": 1, "example": "dadaab22-6e28-4746-8440-0caa030f0f3f" }, "ErrorCode": { "description": "Error code\n`minLength: 1`\n`maxLength: 12`\n", "type": "string", "minLength": 1, "maxLength": 12, "example": "WPMT0017" }, "ErrorMessage": { "description": "Error message\n`minLength: 1`\n`maxLength: 1000`\n", "type": "string", "minLength": 1, "maxLength": 1000, "example": "Invalid JSON payload received: Error unmarshalling request" }, "ErrorResponse": { "type": "object", "properties": { "code": { "$ref": "#/components/schemas/ErrorCode" }, "message": { "$ref": "#/components/schemas/ErrorMessage" } } }, "ExternalAccountId2": { "type": "string", "description": "External ID of the account to which the transaction is posted.", "maxLength": 60, "minLength": 1, "example": "289", "pattern": "^[a-zA-Z0-9-]+$" }, "Force": { "type": "boolean", "description": "Whether a payment validation rule should be executed in a forced state (`true`) or not (`false`).
\nAllowed for `LEDGER` validation rule.\n", "example": false }, "ForcePostCredit": { "type": "boolean", "description": "If `true`, the operation is performed regardless of the account status, balance, or state, unless the account is closed.
\nIf the account has any reason-based force payment restrictions, and the operation violates any of those restrictions, the force operation fails. The reasons that restrict force credit or debit operations are:\n- `ALL_NO_FORCE_ALLOWED`: Debits and credits are permitted, but force operations are not allowed.\n- `ALL_NO_FORCE_ALLOWED`: Debits and credits are permitted, but force operations are not allowed.\n- `DEBIT_ONLY_NO_FORCE_CREDIT_ALLOWED`: Only debits and force debits are allowed.\n- `FORCE_DEBIT_ONLY`: Debits, credits, and force credits are not allowed.\n- `NONE_NO_FORCE_ALLOWED`: Debits, credits, force debits, and force credits are not allowed.\n", "example": false }, "ForcePostDebit": { "type": "boolean", "description": "If `true`, the operation is performed regardless of the account status, balance, or state, unless the account is closed.
\nThe force operation fails if the account has any reason-based force payment restrictions, and the operation violates any of those restrictions. The reasons that restrict force credit or debit operations are:\n - `ALL_NO_FORCE_ALLOWED`: Debits and credits are permitted, but force operations are not allowed.\n - `CREDIT_ONLY_NO_FORCE_DEBIT_ALLOWED`: Only credit and force credit are allowed.\n - `FORCE_CREDIT_ONLY`: Debits, credits and force debit are not allowed.\n - `NONE_NO_FORCE_ALLOWED`: Debits, credits, force debits, and force credits are not allowed.\n", "example": false }, "MultiLegInstantClearing": { "type": "boolean", "description": "Whether funds are available when payment is posted.\n", "example": false }, "MultilegMetadata": { "type": "object", "description": "Key-value pairs containing data intended for storage in the Pismo system." }, "MultiLegPaymentV2ErrorResponse": { "title": "MultiLegPaymentV2ErrorResponse", "type": "object", "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "debits": { "type": "array", "items": { "$ref": "#/components/schemas/DebitLegV2ErrorResponse" } }, "credits": { "type": "array", "items": { "$ref": "#/components/schemas/CreditLegV2ErrorResponse" } } } } ] }, "MultiLegPaymentV2Request": { "title": "MultiLegPaymentV2Request", "type": "object", "required": [ "tracking_id" ], "properties": { "tracking_id": { "$ref": "#/components/schemas/TrackingIdMultiLeg" }, "metadata": { "$ref": "#/components/schemas/MultilegMetadata" }, "debits": { "type": "array", "items": { "$ref": "#/components/schemas/DebitLegV2Request" } }, "credits": { "type": "array", "items": { "$ref": "#/components/schemas/CreditLegV2Request" } }, "instant_clearing": { "$ref": "#/components/schemas/MultiLegInstantClearing" } } }, "MultiLegPaymentV2Response": { "title": "MultiLegPaymentV2Response", "type": "object", "properties": { "tracking_id": { "$ref": "#/components/schemas/TrackingID" }, "metadata": { "$ref": "#/components/schemas/MultilegMetadata" }, "debits": { "type": "array", "items": { "$ref": "#/components/schemas/DebitLegV2Response" } }, "credits": { "type": "array", "items": { "$ref": "#/components/schemas/CreditLegV2Response" } } } }, "Override": { "type": "boolean", "description": "Whether to override the validation rule in the payment process (`true`) or not (`false`).
\nAllowed for `ACCOUNT_STATUS` validation rule.\n", "example": false }, "PaymentDatetime": { "type": "string", "format": "date-time", "description": "Date and time of the payment. Specifying a `payment_datetime` value impacts the account balance history.
\nNotes:\n - The payment datetime is in ISO 8601 format.\n - You can backdate payments a maximum of 390 calendar days. You can postdate payments a maximum of 10 calendar days.\n", "example": "2023-03-10T19:05:56.743Z" }, "ProcessingCode2": { "type": "string", "description": "Processing code used for posting the transaction. The code must have a balance impact compatible with the operation type `debit` or `credit`. To list the organization processing codes, use the [List processing codes](https://developers.pismo.io/pismo-docs/reference/get-processing-code-by-tenant) endpoint.", "maxLength": 6, "minLength": 1, "example": "220035" }, "SkipAccountDateValidation": { "type": "boolean", "description": "If `FALSE`, the `payment_datetime` is validated against the account creation date and time. If `TRUE`, the validation is skipped.", "default": false, "example": false }, "SoftDescriptor": { "type": "string", "description": "Brief description that helps to identify a particular transaction on the bank statement.", "example": "ACME Inc. - Invoice 2938", "maxLength": 100, "minLength": 0 }, "TrackingID": { "type": "string", "description": "A unique payment tracking number provided by the client. If an existing `tracking_id` already exists in the system, the API returns a `409` error.\n\nThis field is:\n - Unique within the Organization.\n - Immutable — It can't be updated.\n - Not recyclable — You can't reuse a `tracking_id`.\n", "minLength": 1, "maxLength": 43, "example": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244" }, "TrackingIdMultiLeg": { "type": "string", "description": "A unique payment tracking number. In the case of multi-leg payments, this ID is used to generate distinct child tracking IDs for each leg. If any of these child tracking IDs matches an existing tracking ID within the platform, a 400 error is returned.
\nA single tracking ID must be provided. This is referred to as the `original tracking ID`. For information about tracking IDs, see [Tracking ID requirement](https://developers.pismo.io/pismo-docs/docs/payment-overview#tracking-id-requirement).\n\nThis field is:\n - Unique within the Organization.\n - Immutable: This field cannot be updated.\n - Not recyclable: `tracking_id` cannot be reused.\n", "maxLength": 43, "minLength": 1, "example": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244" }, "TransactionAmount": { "type": "number", "format": "float", "description": "Transaction amount", "maximum": 100000000000000000, "example": 1000.52, "minimum": 0.01 }, "ValidationRule": { "title": "ValidationRule", "type": "object", "properties": { "override": { "$ref": "#/components/schemas/Override" }, "force": { "$ref": "#/components/schemas/Force" } } }, "ValidationRules": { "title": "ValidationRules", "type": "object", "description": "Rules that determine which validations are executed during the payment process.
\nAvailable validation rules:\n - `LEDGER`\n - `ACCOUNT_STATUS`\n", "additionalProperties": { "$ref": "#/components/schemas/ValidationRule" }, "example": { "ACCOUNT_STATUS": { "override": false }, "LEDGER": { "force": false } } } }, "responses": { "403Forbidden": { "description": "The request has been lost" }, "500InternalServer": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Generic internal error": { "value": { "code": "ECMN9999", "message": "Internal error" } } } } } } }, "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } } }, "paths": { "/corporate/v2/payments/multileg": { "post": { "summary": "Post multi-leg payment (deprecated)", "deprecated": true, "description": "Enable users to submit a payment with multiple legs to the platform. The payments are processed asynchronously and must contain at least two legs, but no more than twenty.\n\nThe payload contains `debits` and `credits` lists. These lists include legs that follow the requirements of `credit` and `debit` objects in the [Post payment](https://developers.pismo.io/pismo-docs/reference/corporate-v2-post-payments) endpoint.\n\nFor information about multi-leg payments, see the [Post multi-leg payment](https://developers.pismo.io/pismo-docs/docs/payment-overview#post-multi-leg-payment) section in _Payment overview_.\n\nNOTES:\n - To find the correct reason IDs, refer to the [List account status reasons](https://developers.pismo.io/pismo-docs/reference/get-accounts-v1-accounts-status-reasons) endpoint.\n - This endpoint does not support forced transfers from an earmark balance.\n - For error handling, see [Error handling mechanism](https://developers.pismo.io/pismo-docs/docs/payment-overview#error-handling-mechanism) in _Payment overview_.\n\nEach leg generates the following events:\n- [Platform authorization created](https://developers.pismo.io/events/docs/platform-authorization-platform-authorization-1)\n- [Account balance changed](https://developers.pismo.io/events/docs/account-balances-balance-change-1)\n- [Account balance changed (Availables)](https://developers.pismo.io/events/docs/availables-change-available-1)\n- [Accounting entry created](https://developers.pismo.io/events/docs/accounting-entry-creation-1)\n- If flex controls are configured, a [Flex control evaluated](https://developers.pismo.io/events/docs/rules-evaluation-requested-1) event is triggered.\n\nAdditionally, the following events are generated for multi-leg payments:\n- [Multi-leg payment lifecycle created](https://developers.pismo.io/events/docs/corporate-multi-leg-creation-1)\n- [Multi-leg payment lifecycle status changed](https://developers.pismo.io/events/docs/corporate-multi-leg-status-change-1)\n\nSee [Data and reporting](https://developers.pismo.io/pismo-docs/docs/data-reporting-overview) for more information about events and setting up event notifications.\n", "parameters": [], "operationId": "corporate-v2-post-multileg-payments", "tags": [ "Payments" ], "requestBody": { "description": "Request body", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiLegPaymentV2Request" } } } }, "responses": { "202": { "description": "Accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiLegPaymentV2Response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiLegPaymentV2ErrorResponse" }, "examples": { "Invalid JSON payload": { "value": { "code": "WMLP0001", "message": "Invalid JSON payload received: Error unmarshalling request" } }, "Tracking ID exceed size": { "value": { "code": "WMLP0002", "message": "tracking_id must be a maximum of 43 characters in length" } }, "Tracking ID required": { "value": { "code": "WMLP0002", "message": "`tracking_id` is a required field" } }, "Payment with more than 20 legs": { "value": { "code": "WMLP0003", "message": "Multi-leg payments must have up to 20 legs" } }, "Payment with less than 2 legs": { "value": { "code": "WMLP0004", "message": "Multi-leg payments must have at least 2 legs" } }, "Multi-leg payments don't allow single transfers": { "value": { "code": "WMLP0006", "message": "Multi-leg payments don't allow single transfers" } }, "Processing code exceed size": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "12345", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP0002", "message": "processing_code must be a maximum of 6 characters in length" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "External Account ID exceed size": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "abcdefghijklmnopqrstuvwxyz012345689abcdefghijklmno", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP0002", "message": "external_account_id must be a maximum of 60 characters in length" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "External Account ID required": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP0002", "message": "external_account_id is a required field" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Amount value exceed": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 100000000000000000, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP0002", "message": "amount must be 100,000,000,000,000,000 or less" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "External account ID contains characters not permitted": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "288", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP0002", "message": "external_account_id contains characters not permitted: [characters]" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Currency required": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP0002", "message": "currency is a required field" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Validation rules errors": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "force_post": true, "validation_rules": { "ACCOUNT_STATUS": { "override": true }, "LEDGER": { "force": true } }, "errors": [ { "code": "WMLP1026", "message": "Payment request with conflicting force parameters" } ] }, { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "force_post": false, "validation_rules": { "ACCOUNT_STATUS": { "force": true } }, "errors": [ { "code": "WMLP1028", "message": "Invalid params for validation rule ACCOUNT_STATUS" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "force_post": false, "validation_rules": { "UNKNOWN": { "override": true } }, "errors": [ { "code": "WMLP1027", "message": "Invalid validation rule UNKNOWN" } ] } ] } }, "Insufficient balance": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1002", "message": "Insufficient balance" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Invalid processing code": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1003", "message": "Invalid processing code" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Currency mismatch": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1004", "message": "Cannot perform conversion between account currency and provided currency" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Amount has invalid decimal places for currency": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.523, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP0002", "message": "The number of decimal places is not compatible with the specified currency" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Invalid account status": { "description": "This error occurs when the account is in an invalid state, examples include a closed account.", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1005", "message": "Invalid account status" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Account has not finished onboarding": { "description": "This error occurs when the account has not completed its onboarding process.", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1039", "message": "Account has not finished onboarding" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Earmark not active": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1006", "message": "Earmark is not active" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Earmark insufficient funds": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1022", "message": "There is insufficient balance in the earmark to complete this operation" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Weekend error": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1007", "message": "Cannot post transaction on weekends" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Holiday error": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1008", "message": "Cannot post transaction on holidays" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Account not found": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1009", "message": "Account not found" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Earmark not found": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1010", "message": "Earmark not found" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Processing code not found": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1011", "message": "Processing code not found" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Tracking ID already exists": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1013", "message": "Tracking ID already exists" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Closed debit account": { "description": "This error occurs when a force debit operation is attempted on a closed account.", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1014", "message": "Debit not permitted on a closed account" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Closed credit account": { "description": "This error occurs when a force credit operation is attempted on a closed account.", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [ { "code": "WMLP1015", "message": "Credit not permitted on a closed account" } ] } ] } }, "Force debit restrictions": { "description": "This error occurs when a force debit operation is attempted on an account with force debit restrictions.", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [ { "code": "WMLP1016", "message": "Force debit not allowed by reason - Credit Only - No Force Debit Allowed" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Force credit restrictions": { "description": "This error occurs when a force credit operation is attempted on an account with force credit restrictions.", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "errors": [] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [ { "code": "WMLP1017", "message": "Force credit not allowed by reason - {Reason}" } ] } ] } }, "Payment date cannot be earlier than account creation date": { "description": "This error occurs when the user specifies a payment date earlier than the account creation date.", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "payment_datetime": "2033-10-24T12:00:00Z", "errors": [ { "code": "WMLP1019", "message": "The payment date cannot be earlier than the account creation date" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Payment date cannot be earlier than account migration date": { "description": "This error occurs when the user specifies a payment date earlier than the account migration date.", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "payment_datetime": "2033-10-24T12:00:00Z", "errors": [ { "code": "WMLP1048", "message": "The payment date cannot be earlier than the account migration date" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Backdating earmark not allowed": { "description": "This error occurs when the user specifies a payment date in an earmark debit operation.", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "payment_datetime": "2033-10-24T12:00:00Z", "errors": [ { "code": "WMLP1020", "message": "Earmark not permitted on a backdating operation" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Retroactive payment datetime not allowed": { "description": "This error occurs when the given `payment_datetime` is earlier than the maximum number of retroactive days specified in the account or program payment settings", "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "payment_datetime": "2033-10-24T12:00:00Z", "errors": [ { "code": "WMLP1023", "message": "The maximum retroactive payment datetime allowed is [n] days" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Payment business date before earmark creation": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "business_date": "2024-12-15", "errors": [ { "code": "WMLP1036", "message": "Payment business date cannot be earlier than the earmark creation date" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Back business dating disabled": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "business_date": "2024-12-15", "errors": [ { "code": "WMLP1034", "message": "Back business dating is disabled" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Operations blocked for account": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "earmark_id": "dadaab22-6e28-4746-8440-0caa030f0f3f", "business_date": "2024-12-15", "errors": [ { "code": "WMLP1035", "message": "Operations blocked for account" } ] } ], "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [] } ] } }, "Invalid business date for the current business day cycle": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "business_date": "2030-06-30", "currency": "USD", "errors": [ { "code": "WMLP1024", "message": "Invalid business date for the current business day cycle" } ] } ] } }, "Invalid business date format": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "business_date": "2025-05-30", "currency": "USD", "errors": [ { "code": "WMLP0002", "message": "business_date 2025-05-32 should be formatted as yyyy-mm-dd and be a valid date" } ] } ] } }, "Debit not allowed by status reason": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "debits": [ { "external_account_id": "289", "processing_code": "220037", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [ { "code": "WMLP1037", "message": "Debit not allowed by reason - " } ] } ] } }, "Credit not allowed by status reason": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "currency": "USD", "errors": [ { "code": "WMLP1038", "message": "Credit not allowed by reason - " } ] } ] } }, "Future payment datetime above limit": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "payment_datetime": "2030-06-30T12:23:45.000Z", "currency": "USD", "errors": [ { "code": "WMLP1030", "message": "Future dated payment datetime must be before date limit" } ] } ] } }, "Cannot post back value-dated for division": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "payment_datetime": "2030-06-30T12:23:45.000Z", "currency": "USD", "errors": [ { "code": "WMLP1041", "message": "Cannot post back value-dated transaction for this division" } ] } ] } }, "Cannot post future value-dated for division": { "value": { "code": "WMLP0005", "message": "Validation error: one or more legs did not pass validation", "credits": [ { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "ACME Inc. - Invoice 2938", "amount": 1000.52, "payment_datetime": "2030-06-30T12:23:45.000Z", "currency": "USD", "errors": [ { "code": "WMLP1042", "message": "Cannot post future value-dated transaction for this division" } ] } ] } } } } } }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServer" } } } } } } ```