# Post payment Enable users to submit a payment to the Pismo platform. It supports posting debits and credits to an account, as well as facilitating fund transfers between accounts. For details about payment operations, see [Payment overview](doc:payment-overview) and [Corporate Banking Launch Reference](doc:corporate-banking-launch-reference). NOTES: - This endpoint requires an account token - an access token encoded with an external account ID. Tokens can expire quickly, which can result in a `401 Unauthorized` message. - To get 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.
Each payment operation created 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. See [Data and reporting](doc:data-reporting-overview) for more information on 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": { "Amount": { "type": "object", "description": "Amount", "properties": { "value": { "$ref": "#/components/schemas/AmountValue" }, "currency": { "$ref": "#/components/schemas/Currency" } }, "required": [ "value" ] }, "AmountValue": { "type": "number", "format": "float", "description": "Amount value", "exclusiveMinimum": false, "minimum": 0, "maximum": 100000000000000000, "example": 1000.52 }, "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" }, "ChannelCode": { "description": "Alphanumeric channel code identifier", "type": "string", "minLength": 1, "maxLength": 20, "pattern": "^[a-zA-Z0-9]+$", "example": "GDP" }, "CreditProcessingCode": { "type": "string", "description": "Processing code for posting credit transactions. The code must have a credit balance impact. You can retrieve a list of the organization processing codes using [List processing codes](https://developers.pismo.io/pismo-docs/reference/get-processing-code-by-tenant).", "maxLength": 6, "example": "220035" }, "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" }, "DebitProcessingCode": { "type": "string", "description": "Processing code to be used for posting the debit transaction. List the organization processing codes in [List processing codes](https://developers.pismo.io/pismo-docs/reference/get-processing-code-by-tenant) endpoint.", "maxLength": 6, "example": "220037" }, "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" } } }, "EventDatetime": { "type": "string", "format": "date-time", "minLength": 1, "maxLength": 30, "description": "Event date and time displayed in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
\n`minLength: 1`\n`maxLength: 30`\n", "example": "2023-04-27T12:01:24Z" }, "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 }, "ForcePostPayment": { "type": "boolean", "description": "If `true`, the transaction is executed regardless of the accounts balance or state.
\nTo post a forced transfer, you must specify both `credit` and `debit`, and set `force_post` to `true`.
\nReason-based force payments:\n If the account has any reason-based force payment restrictions, and the operation violates any of those restrictions, it 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 - `CREDIT_ONLY_NO_FORCE_DEBIT_ALLOWED`: Only credits and force credits are allowed.\n - `FORCE_CREDIT_ONLY`: Debits, credits, and force debits are not allowed.\n - `FORCE_DEBIT_ONLY`: Debits, credits, and force credits are not allowed.\n - `DEBIT_ONLY_NO_FORCE_CREDIT_ALLOWED`: Only debits and force debits are allowed.\n - `NONE_NO_FORCE_ALLOWED`: Debits, credits, force debits, and force credits are not allowed.
\nNOTE: Forced transfers from an earmark balance are not supported when `credit`, `debit`, or `earmark_id` are specified.\n", "default": false, "example": false }, "InstantClearing": { "type": "boolean", "description": "Whether the funds are available when the payment is posted (`true`) or not (`false`).", "example": false }, "MetadataPayment": { "type": "object", "description": "Key-value pairs containing data intended for storage in the Pismo system.
\nNOTES:\n- The `metadata` field includes a `corporate_metadata` object with the following fields:\n - `credit_external_account_id`: Included in the `corporate_metadata` field when it's provided in the credit leg.\n - `debit_external_account_id`: Included in the `corporate_metadata` field when it's provided in the debit leg.\n - `earmark_id`: Included in the `corporate_metadata` field when it's provided in the debit leg.\n- The `corporate_metadata` attribute must be an object. A type mismatch results in an error as mapped in the responses section.\n- To be able to send different `metadata` information for each payment leg in transfer operations, the `metadata` can be included in the primary or leg field. A conflict between the primary and a leg field results in an error as mapped in the responses section.\n", "example": { "my-id": 2932 } }, "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" }, "PaymentV2Request": { "title": "PaymentV2Request", "type": "object", "required": [ "amount", "tracking_id" ], "properties": { "amount": { "$ref": "#/components/schemas/Amount" }, "tracking_id": { "$ref": "#/components/schemas/TrackingID" }, "soft_descriptor": { "$ref": "#/components/schemas/SoftDescriptorPayment" }, "credit": { "$ref": "#/components/schemas/RequiredCreditTransaction" }, "debit": { "$ref": "#/components/schemas/RequiredDebitTransaction" }, "metadata": { "$ref": "#/components/schemas/MetadataPayment" }, "skip_account_date_validation": { "$ref": "#/components/schemas/SkipAccountDateValidation" }, "force_post": { "$ref": "#/components/schemas/ForcePostPayment" }, "validation_rules": { "$ref": "#/components/schemas/ValidationRules" }, "payment_datetime": { "$ref": "#/components/schemas/PaymentDatetime" }, "business_date": { "$ref": "#/components/schemas/BusinessDate" }, "channel": { "$ref": "#/components/schemas/ChannelCode" }, "instant_clearing": { "$ref": "#/components/schemas/InstantClearing" } } }, "PaymentV2Response": { "title": "PaymentV2Response", "type": "object", "properties": { "tracking_id": { "$ref": "#/components/schemas/TrackingID" }, "event_datetime": { "$ref": "#/components/schemas/EventDatetime" } } }, "RequiredCreditTransaction": { "type": "object", "description": "Credit transaction. To post a credit, you must provide a `credit` object with a valid credit processing code (`processing_code`) and destination (`external_account_id`).
\nTo post a transfer, you must provide both credit and debit objects, representing the credit and debit legs of the operation, respectively.\n", "properties": { "external_account_id": { "$ref": "#/components/schemas/ExternalAccountId2" }, "processing_code": { "$ref": "#/components/schemas/CreditProcessingCode" }, "soft_descriptor": { "$ref": "#/components/schemas/SoftDescriptorPayment" }, "metadata": { "$ref": "#/components/schemas/MetadataPayment" } }, "required": [ "external_account_id" ] }, "RequiredDebitTransaction": { "type": "object", "description": "Debit transaction. To post a debit you must provide a `debit` object. If you provide an `earmark_id` value inside the `debit` object, the payment amount is withdrawn directly from the earmark balance. The earmark ID is generated by the [Create earmark](https://developers.pismo.io/pismo-docs/reference/post-corporate-v2-earmarks) endpoint.
\nTo post a transfer, you must provide both `credit` and `debit` objects, representing the credit and debit legs of the operation, respectively. If you provide an `earmark_id` value inside the `debit` object, the transferred amount is withdrawn directly from the earmark balance.\n", "properties": { "external_account_id": { "$ref": "#/components/schemas/ExternalAccountId2" }, "processing_code": { "$ref": "#/components/schemas/DebitProcessingCode" }, "earmark_id": { "$ref": "#/components/schemas/EarmarkIdWithdrawal" }, "soft_descriptor": { "$ref": "#/components/schemas/SoftDescriptorPayment" }, "metadata": { "$ref": "#/components/schemas/MetadataPayment" } }, "required": [ "external_account_id" ] }, "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 }, "SoftDescriptorPayment": { "type": "string", "description": "Brief description that helps to identify a particular transaction on the bank statement.
\nNOTES:\n- To be able to send different `soft_descriptor` information for each payment leg in transfer operations, the `soft_descriptor` can be included in the primary or leg field. A conflict between the primary and a leg field results in an error as mapped in the responses section.\n", "maxLength": 100, "minLength": 0, "example": "ACME Inc. - Invoice 2938" }, "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" }, "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": { "post": { "summary": "Post payment", "description": "Enable users to submit a payment to the Pismo platform. It supports posting debits and credits to an account, as well as facilitating fund transfers between accounts.\n\nFor details about payment operations, see [Payment overview](https://developers.pismo.io/pismo-docs/docs/payment-overview) and [Corporate Banking Launch Reference](https://developers.pismo.io/pismo-docs/docs/corporate-banking-launch-reference).\n\nNOTES:\n - This endpoint requires an account token - an access token encoded with an external account ID. Tokens can expire quickly, which can result in a `401 Unauthorized` message.\n - To get 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\nEach payment operation created 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\nSee [Data and reporting](https://developers.pismo.io/pismo-docs/docs/data-reporting-overview) for more information on events and setting up event notifications.", "parameters": [], "operationId": "corporate-v2-post-payments", "tags": [ "Payments" ], "requestBody": { "description": "Request body", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentV2Request" }, "examples": { "Credit transaction": { "value": { "credit": { "external_account_id": "289", "processing_code": "220035" }, "amount": { "currency": "USD", "value": 100 }, "soft_descriptor": "Debit operation", "channel": "GCE", "tracking_id": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244" } }, "Debit transaction": { "value": { "debit": { "external_account_id": "289", "processing_code": "220037" }, "amount": { "currency": "USD", "value": 100 }, "soft_descriptor": "Debit operation", "channel": "GCE", "tracking_id": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244" } }, "Debit transaction with earmark": { "value": { "debit": { "external_account_id": "289", "processing_code": "219251", "earmark_id": "632b378a-2248-11ee-be56-0242ac120002" }, "amount": { "currency": "USD", "value": 100 }, "soft_descriptor": "Debit operation from earmark balance", "tracking_id": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244" } }, "Transfer transaction": { "value": { "credit": { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "Transfer - Credit leg", "metadata": { "invoice": 298 } }, "debit": { "external_account_id": "289", "processing_code": "220037", "soft_descriptor": "Transfer - Debit leg", "metadata": { "invoice": 892 } }, "amount": { "currency": "USD", "value": 100 }, "tracking_id": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244" } }, "Transfer from earmark balance transaction": { "value": { "credit": { "external_account_id": "289", "processing_code": "220035" }, "debit": { "external_account_id": "289", "processing_code": "220037", "earmark_id": "632b378a-2248-11ee-be56-0242ac120002" }, "amount": { "currency": "USD", "value": 100 }, "soft_descriptor": "Transfer operation from earmark balance", "tracking_id": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244", "metadata": { "invoice": 298 } } }, "Force transfer transaction": { "value": { "credit": { "external_account_id": "289", "processing_code": "220035", "soft_descriptor": "Force transfer - Credit leg", "metadata": { "invoice": 298 } }, "debit": { "external_account_id": "289", "processing_code": "220037", "soft_descriptor": "Force transfer - Debit leg", "metadata": { "invoice": 892 } }, "amount": { "currency": "USD", "value": 100 }, "tracking_id": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244", "force_post": true } }, "Transfer transaction with validation rules": { "value": { "credit": { "external_account_id": "289", "processing_code": "220035" }, "debit": { "external_account_id": "289", "processing_code": "220037" }, "amount": { "currency": "USD", "value": 100 }, "soft_descriptor": "Transfer operation with validation rules", "tracking_id": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244", "validation_rules": { "ACCOUNT_STATUS": { "override": true }, "LEDGER": { "force": true } }, "metadata": { "invoice": 298 } } } } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentV2Response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Operations blocked for account": { "description": "This error occurs when there's an operations block for this account", "value": { "code": "WOBK0007", "message": "Operations blocked for account" } }, "Invalid JSON payload": { "value": { "code": "WPMT0017", "message": "Invalid JSON payload received: Error unmarshalling request" } }, "Corporate account not found": { "value": { "code": "WPMT0011", "message": "Corporate account not found" } }, "Account has not finished onboarding": { "value": { "code": "WPMT0053", "message": "Account has not finished onboarding" } }, "Processing code exceed size": { "value": { "code": "WPMT0018", "message": "processing_code must be a maximum of 6 characters in length" } }, "External Account ID exceed size": { "value": { "code": "WPMT0018", "message": "external_account_id must be a maximum of 60 characters in length" } }, "External Account ID required": { "value": { "code": "WPMT0018", "message": "external_account_id is a required field" } }, "Amount value less than zero": { "value": { "code": "WPMT0018", "message": "value must be 0 or greater" } }, "Amount value exceeded": { "value": { "code": "WPMT0018", "message": "amount must be 100,000,000,000,000,000 or less" } }, "Amount value required": { "value": { "code": "WPMT0018", "message": "value is a required field" } }, "Tracking ID exceed size": { "value": { "code": "WPMT0018", "message": "tracking_id must be a maximum of 43 characters in length" } }, "External account ID contains characters not permitted": { "value": { "code": "WPMT0018", "message": "external_account_id contains characters not permitted: [characters]" } }, "Primary and leg metadata conflict": { "value": { "code": "WPMT0018", "message": "Cannot use primary and payment legs metadata fields together" } }, "Primary and leg soft descriptor conflict": { "value": { "code": "WPMT0018", "message": "Cannot use primary and payment legs soft_descriptor fields together" } }, "Channel contains character not permitted": { "summary": "channel contains character not permitted", "value": { "code": "WPMT0018", "message": "channel contains character not permitted" } }, "Channel exceed size": { "summary": "channel exceeds maximum length", "value": { "code": "WPMT0018", "message": "channel must be a maximum of 20 characters in length" } }, "Validation rules with force_post not allowed": { "value": { "code": "WPMT0029", "message": "Payment request with conflicting force parameters" } }, "Invalid validation rule": { "value": { "code": "WPMT0030", "message": "Invalid validation rule {validation rule}" } }, "Invalid params for validation rule": { "value": { "code": "WPMT0031", "message": "Invalid params for validation rule {validation rule}" } }, "Unrecognized account ID type": { "value": { "code": "WCAC0010", "message": "Token contains an unrecognized account ID type" } }, "Payment date before account creation date": { "value": { "code": "WPMT0001", "message": "The payment date cannot be earlier than the account creation date" } }, "Payment date before account migration date": { "value": { "code": "WPMT0061", "message": "The payment date cannot be earlier than the account migration date" } }, "Invalid currency": { "description": "The currency must be specified in the ISO 4217 3-letter code", "value": { "code": "WPMT0015", "message": "Invalid currency" } }, "Currency mismatch": { "description": "At the moment, the platform can only accept the currency that is configured for the account", "value": { "code": "WPMT0016", "message": "Cannot perform conversion between account currency and provided currency" } }, "Holiday error": { "value": { "code": "WPMT0003", "message": "Cannot post transaction on holidays" } }, "Weekend error": { "value": { "code": "WPMT0004", "message": "Cannot post transaction on weekends" } }, "Invalid debit processing code": { "value": { "code": "WPMT0005", "message": "Invalid debit processing code" } }, "Invalid credit processing code": { "value": { "code": "WPMT0006", "message": "Invalid credit processing code" } }, "Invalid account status": { "description": "This error occurs when the account is in an invalid state, an example is when the account cannot be credited or debited.", "value": { "code": "WPMT0009", "message": "Invalid account status" } }, "Insufficient funds": { "value": { "code": "WPMT0010", "message": "Insufficient funds" } }, "Invalid debit earmark processing code": { "value": { "code": "WPMT0021", "message": "Invalid debit earmark processing code" } }, "Earmark not active": { "description": "This error occurs when the client sends a debit with an `earmark_id` where its status is not ACTIVE", "value": { "code": "WEAM0008", "message": "Earmark ID `earmark_id` not active" } }, "Earmark insufficient balance": { "description": "This error occurs when the client sends a debit with an `earmark_id` where its balance is not sufficient for the given amount", "value": { "code": "WEAM0006", "message": "Earmark does not have sufficient balance to complete this operation. Balance: `earmark_balance`" } }, "Payment business date before earmark creation": { "description": "This error occurs when the payment `business_date` is before the earmark creation date", "value": { "code": "WPMT0050", "message": "Payment business date cannot be earlier than the earmark creation date" } }, "Orgs operation not found or parameterized": { "value": { "code": "WEAM0017", "message": "Orgs operations not found or parameters are incorrect or invalid" } }, "Invalid account program type": { "value": { "code": "WEAM0019", "message": "The account's program type is invalid" } }, "Target account cannot be credited": { "description": "This error occurs when the target (credit) account cannot be credited.", "value": { "code": "WPMT0022", "message": "The account cannot be credited, credit earmark function is not active" } }, "Sender account cannot be debited": { "description": "This error occurs when the sender account cannot be debited.", "value": { "code": "WPMT0023", "message": "The account cannot be debited. Debit earmark function is not active" } }, "Tracking ID required": { "value": { "code": "WPMT0018", "message": "tracking_id is a required field" } }, "Currency required": { "value": { "code": "WPMT0018", "message": "currency is a required field" } }, "Force operation not allowed": { "value": { "code": "WPMT0024", "message": "Force operation not allowed by reason: {reason_description}" } }, "Debit not permitted": { "value": { "code": "WPMT0025", "message": "Debit not permitted on a closed account" } }, "Credit not permitted": { "value": { "code": "WPMT0026", "message": "Credit not permitted on a closed account" } }, "Amount has invalid decimal places for currency": { "value": { "code": "WPMT0018", "message": "The number of decimal places is not compatible with the specified currency" } }, "Backdating not permitted": { "value": { "code": "WEAM0029", "message": "Earmark not permitted on a backdating operation" } }, "Corporate Metadata must be an object": { "value": { "code": "WCMN0002", "message": "corporate_metadata is reserved and must be an object" } }, "Invalid business date for the current business day cycle": { "value": { "code": "WPMT0028", "message": "Invalid business date for the current business day cycle" } }, "Invalid business date format": { "value": { "code": "WPMT0018", "message": "business_date 24-05-2024 should be formatted as yyyy-mm-dd and be a valid date" } }, "Misconfigured administrative division": { "value": { "code": "WPMT0045", "message": "Administrative division is misconfigured" } }, "Transfer must be sent by debit account": { "description": "This error occurs when the transfer request originates from a credit leg account", "value": { "code": "WPMT0049", "message": "Transfer operations must be sent by the debit account" } }, "Future dated earmark payments are not allowed": { "description": "This error occurs when the earment payment is a future-dated earmark payment", "value": { "code": "WPMT0036", "message": "Future dated earmark payments are not allowed" } }, "Future dated payments only supports default debit processing code": { "description": "This error occurs when the processing code for a future-dated payment is not a debit processing code", "value": { "code": "WPMT0005", "message": "Future dated payments only supports default debit processing code" } }, "Future dated payments only supports default credit processing code": { "description": "This error occurs when the processing code for a future-dated payment is not a credit processing code", "value": { "code": "WPMT0006", "message": "Future dated payments only supports default credit processing code" } }, "Back business dating disabled": { "description": "This error occurs when the back business payment feature is disabled through [Past business date toggle](https://developers.pismo.io/pismo-docs/reference/put-back-business-toggle) endpoint", "value": { "code": "WPMT0044", "message": "Back business dating is disabled" } }, "Operation not allowed by reason": { "description": "This error occurs when the operation you performed is not allowed by the account status reason provided.", "value": { "code": "WPMT0051", "message": "Operation not allowed by reason: " } }, "Future payment datetime above limit": { "value": { "code": "WPMT0035", "message": "Future dated payment datetime must be before date limit" } }, "Back payment datetime above limit": { "value": { "code": "WPMT0046", "message": "The maximum retroactive payment datetime allowed is days" } }, "Cannot post back value-dated for division": { "value": { "code": "WPMT0054", "message": "Cannot post back value-dated transaction for this division" } }, "Cannot post future value-dated for division": { "value": { "code": "WPMT0055", "message": "Cannot post future value-dated transaction for this division" } }, "Invalid account currency code": { "value": { "code": "WPMT0056", "message": "Invalid account currency code: 999" } }, "Channel not found": { "summary": "Channel not found", "value": { "code": "WPMT0058", "message": "Channel not found" } }, "Invalid processing code": { "description": "This error occurs when the processing code is invalid", "value": { "code": "WPMT0008", "message": "Invalid processing code" } }, "Account closed error": { "description": "This error occurs when the account is closed", "value": { "code": "WPMT0014", "message": "Account is closed" } }, "Same account credit debit": { "description": "This error occurs when you attempt to use the same account for both credit and debit in a transfer", "value": { "code": "WPMT0019", "message": "Cannot use same account for credit and debit" } }, "Validation rules conflict": { "description": "This error occurs when validation rules conflict with internal accounts program", "value": { "code": "WPMT0032", "message": "Validation rules conflict with internal accounts program" } }, "Invalid header account": { "description": "This error occurs when the x-account-id header is invalid or malformed", "value": { "code": "WCAC0002", "message": "Invalid header account" } }, "Account not found": { "description": "This error occurs when the account is not found", "value": { "code": "WCAC0012", "message": "Account not found" } }, "Invalid time zone": { "value": { "code": "WPMT0002", "message": "Invalid timezone {invalid}" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Unauthorized account": { "value": { "code": "WCAC0001", "message": "Account not authorized" } } } } } }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Earmark not found": { "description": "This error occurs when the client sends a debit with an `earmark_id` that does not exist", "value": { "code": "WEAM0007", "message": "Earmark with ID `earmark_id` not found" } } } } } }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Tracking ID already in use": { "description": "This error occurs when the client sends a duplicate tracking ID for the payment", "value": { "code": "WPMT0007", "message": "tracking_id is already in use", "data": { "tracking_id": "10027506-171f-b1e1-8412-67f5f5145a3b", "event_datetime": "2025-02-05T21:46:06Z" } } }, "Tracking ID already in use by another account": { "description": "This error occurs when the client sends a duplicate tracking ID that is either already in use by another account, or by the same account with a different earmark ID than the one used in the original payment.", "value": { "code": "WPMT0052", "message": "tracking_id is already in use" } } } } } }, "423": { "description": "Locked", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Transaction using this tracking ID in progress": { "description": "This error occurs when multiple payment requests with the same `tracking_id` are made simultaneously", "value": { "code": "WPMT0047", "message": "transaction using this tracking_id is in progress, please try again later" } } } } } }, "500": { "$ref": "#/components/responses/500InternalServer" } } } } } } ```