# Post float cash-in (Pismo account ID)
Enable users to submit float cash-in payments to the Pismo platform. It supports posting credits to an account, as well as facilitating fund transfers between accounts.
To post a credit, you must provide a valid `processing_code` for the credit operation and the recipient's `external_account_id`.
See the Examples drop-down menu for a sample payload.
For more information about payments operations, see [Corporate Banking Launch Reference](doc:corporate-banking-launch-reference).
NOTES:
- This endpoint requires an account-specific access token. Getting an account token requires you to call the [Get OpenID access token endpoint](https://developers.pismo.io/pismo-docs/reference/post-passport-v1-oauth2-token-1) with an external account ID. Tokens can expire quickly, which can result in an Unauthorized message.
Each payment created generates the following events:
- [Float payment status change](https://developers.pismo.io/events/docs/corporate-float-payment-status-change-1)
- [Authorization created](https://developers.pismo.io/events/docs/authorization-authorization-event-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)
- [Transaction created](https://developers.pismo.io/events/docs/transaction-creation-1).
- [Accounting entry created](https://developers.pismo.io/events/docs/accounting-entry-creation-1)
- If flex controls are configured, the event is triggered:
- [Flex control evaluated](https://developers.pismo.io/events/docs/rules-evaluation-requested-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 (Pismo account ID)",
"description": "Payment endpoints"
}
],
"components": {
"schemas": {
"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"
},
"Currency2": {
"type": "string",
"description": "3-letter, ISO-4217 standard alphabetic code for the currency used in the total and float amounts.",
"maxLength": 3,
"example": "USD"
},
"DeferredPaymentStatus": {
"type": "string",
"description": "Status of the deferred payment\n",
"enum": [
"CREATED",
"UNSETTLED",
"SETTLED",
"FAILED"
],
"example": "CREATED"
},
"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-]+$"
},
"FloatAmount": {
"type": "number",
"format": "float",
"description": "Part of the total amount that is deferred to settle on the `settlement_date`. If it is equal to or greater than `total_amount`, a bad request error is returned.\n",
"maximum": 100000000000000000,
"example": 300.52,
"minimum": 0.01
},
"FloatPaymentRequest": {
"title": "FloatPaymentRequest",
"type": "object",
"required": [
"external_account_id",
"currency",
"total_amount",
"float_amount",
"settlement_date",
"tracking_id"
],
"properties": {
"external_account_id": {
"$ref": "#/components/schemas/ExternalAccountId2"
},
"currency": {
"$ref": "#/components/schemas/Currency2"
},
"total_amount": {
"$ref": "#/components/schemas/TransactionAmount"
},
"float_amount": {
"$ref": "#/components/schemas/FloatAmount"
},
"tracking_id": {
"$ref": "#/components/schemas/TrackingID"
},
"settlement_date": {
"$ref": "#/components/schemas/SettlementDate"
},
"processing_code": {
"$ref": "#/components/schemas/CreditProcessingCode"
},
"description": {
"$ref": "#/components/schemas/TransactionDescription"
},
"metadata": {
"$ref": "#/components/schemas/FloatMetadata"
}
}
},
"FloatPaymentResponse": {
"title": "FloatPaymentResponse",
"type": "object",
"properties": {
"tracking_id": {
"$ref": "#/components/schemas/TrackingID"
},
"status": {
"$ref": "#/components/schemas/DeferredPaymentStatus"
}
}
},
"FloatMetadata": {
"type": "object",
"description": "Key-value pairs containing data intended for storage in the Pismo system.
\nNOTES:\n - The `metadata` includes a `corporate_metadata` object with the following subfields:\n - `credit_external_account_id`\n - `authorization_type`\n - `business_date`\n - `float_amount`\n - `settlement_date`\n - The `corporate_metadata` field must be an object. A type mismatch results in an error as mapped in the responses section.\n"
},
"SettlementDate": {
"type": "string",
"format": "date",
"description": "Future date on which the `float_amount` is settled. Corresponds to the cycle closing date relative to the payment date.
\nNotes:\n - The settlement date is in ISO 8601 format.\n - It's similar to the `business_date` attribute for regular payment operations.\n",
"example": "2023-03-09"
},
"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"
},
"TransactionAmount": {
"type": "number",
"format": "float",
"description": "Transaction amount",
"maximum": 100000000000000000,
"example": 1000.52,
"minimum": 0.01
},
"TransactionDescription": {
"type": "string",
"description": "A brief description that appears on the bank statement to help identify a particular transaction.",
"example": "ACME Inc. - Invoice 2938",
"maxLength": 100
}
},
"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/v1/corporate-float-cashin": {
"post": {
"summary": "Post float cash-in (Pismo account ID)",
"description": "Enable users to submit float cash-in payments to the Pismo platform. It supports posting credits to an account, as well as facilitating fund transfers between accounts.\n\nTo post a credit, you must provide a valid `processing_code` for the credit operation and the recipient's `external_account_id`.\n\nSee the Examples drop-down menu for a sample payload.\n\nFor more information about payments operations, see [Corporate Banking Launch Reference](https://developers.pismo.io/pismo-docs/docs/corporate-banking-launch-reference).\n\nNOTES:\n - This endpoint requires an account-specific access token. Getting an account token requires you to call the [Get OpenID access token endpoint](https://developers.pismo.io/pismo-docs/reference/post-passport-v1-oauth2-token-1) with an external account ID. Tokens can expire quickly, which can result in an Unauthorized message.\n\nEach payment created generates the following events:\n- [Float payment status change](https://developers.pismo.io/events/docs/corporate-float-payment-status-change-1)\n- [Authorization created](https://developers.pismo.io/events/docs/authorization-authorization-event-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- [Transaction created](https://developers.pismo.io/events/docs/transaction-creation-1).\n- [Accounting entry created](https://developers.pismo.io/events/docs/accounting-entry-creation-1)\n- If flex controls are configured, the event is triggered:\n - [Flex control evaluated](https://developers.pismo.io/events/docs/rules-evaluation-requested-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.",
"parameters": [],
"operationId": "post-corporate-float-cash-in",
"tags": [
"Payments (Pismo account ID)"
],
"requestBody": {
"description": "Request body",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FloatPaymentRequest"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FloatPaymentResponse"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"Invalid JSON payload": {
"value": {
"code": "WCFC0001",
"message": "Invalid JSON payload received: Error unmarshalling request"
}
},
"Processing code exceed size": {
"value": {
"code": "WCFC0002",
"message": "processing_code must be a maximum of 6 characters in length"
}
},
"External Account ID exceed size": {
"value": {
"code": "WCFC0002",
"message": "external_account_id must be a maximum of 60 characters in length"
}
},
"External Account ID required": {
"value": {
"code": "WCFC0002",
"message": "external_account_id is a required field"
}
},
"Float Amount value zero": {
"value": {
"code": "WCFC0002",
"message": "value must be greater than 0"
}
},
"Float Amount value exceed": {
"value": {
"code": "WCFC0002",
"message": "value must be 999,999,999,999.99 or less"
}
},
"Float Amount value required": {
"value": {
"code": "WCFC0002",
"message": "value is a required field"
}
},
"Total Amount value zero": {
"value": {
"code": "WCFC0002",
"message": "value must be greater than 0"
}
},
"Total Amount value exceed": {
"value": {
"code": "WCFC0002",
"message": "value must be 999,999,999,999.99 or less"
}
},
"Total Amount value required": {
"value": {
"code": "WCFC0002",
"message": "value is a required field"
}
},
"Tracking ID exceed size": {
"value": {
"code": "WCFC0002",
"message": "tracking_id must be a maximum of 36 characters in length"
}
},
"External account ID contains characters not permitted": {
"value": {
"code": "WCFC0002",
"message": "external_account_id contains characters not permitted: [characters]"
}
},
"Tracking ID required": {
"value": {
"code": "WCFC0002",
"message": "tracking_id is a required field"
}
},
"Currency required": {
"value": {
"code": "WCFC0002",
"message": "currency is a required field"
}
},
"Amount has invalid decimal places for currency": {
"value": {
"code": "WCFC0002",
"message": "The number of decimal places is not compatible with the specified currency"
}
},
"Invalid amount values": {
"value": {
"code": "WCFC0003",
"message": "Invalid values for float_amount and total_amount"
}
},
"Currency mismatch": {
"description": "At the moment, the platform can only accept the currency that is configured for the account",
"value": {
"code": "WCFC0005",
"message": "Cannot perform conversion between account currency and provided currency"
}
},
"Holiday error": {
"value": {
"code": "WCFC0006",
"message": "Cannot post transaction on holidays"
}
},
"Weekend error": {
"value": {
"code": "WCFC0007",
"message": "Cannot post transaction on weekends"
}
},
"Invalid credit processing code": {
"value": {
"code": "WCFC0008",
"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": "WCFC0009",
"message": "Invalid account status"
}
},
"Insufficient funds": {
"value": {
"code": "WCFC0010",
"message": "Insufficient funds"
}
},
"Account closed error": {
"description": "This error occurs when the client sends a force post payment and the account has been closed",
"value": {
"code": "WCFC0011",
"message": "Action not permitted on a closed account"
}
},
"Orgs operation not found or parameterized": {
"value": {
"code": "WCFC0012",
"message": "Orgs operations not found or parameters are incorrect or invalid"
}
},
"Invalid account program type": {
"value": {
"code": "WCFC0013",
"message": "The account's program type is invalid"
}
},
"Invalid settlement date": {
"value": {
"code": "WCFC0014",
"message": "settlement_date must be after the current business date"
}
},
"Invalid currency": {
"description": "The currency must be specified in the ISO 4217 3-letter code",
"value": {
"code": "WCFC0016",
"message": "Invalid currency"
}
},
"Corporate Metadata must be an object": {
"value": {
"code": "WCMN0002",
"message": "corporate_metadata is reserved and must be an object"
}
},
"Unrecognized account ID type": {
"value": {
"code": "WCAC0010",
"message": "Token contains an unrecognized account ID type"
}
},
"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": "WCFC0022",
"message": "transaction using this tracking_id is in progress, please try again later"
}
}
}
}
}
},
"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"
},
"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": "WCFC0004",
"message": "tracking_id is already in use"
}
},
"Invalid time zone": {
"value": {
"code": "WCFC0015",
"message": "Division {id} is set with an invalid timezone ({timezone})"
}
}
}
}
}
},
"500": {
"$ref": "#/components/responses/500InternalServer"
}
}
}
}
}
}
```