> ## Documentation Index
> Fetch the complete documentation index at: https://www.marqeta.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create program transfer

> Use this endpoint to create a program transfer.

POST/programtransfers

Use this endpoint to create a program transfer. Add the program transfer details to the body of the request in [JSON](http://www.json.org/) format.

Include either `user_token` or `business_token` in the message body to specify the account holder whose general purpose account (GPA) will be debited by the program transfer. The user or business must already exist.

> [!NOTE]
>
> **Note**\
> If the GPA has insufficient funds to cover both the amount of the program transfer and all attached fees, then no funds are transferred.

## Request body

| Fields | Description |
| - | - |
| amount decimal  Required | Amount of program transfer. **Allowable Values:**  decimal **Format:** 0.00 |
| business\_token string  Optional | Unique identifier of the business. Pass either a `business_token` or a `user_token`, not both. Send a `GET` request to `/businesses` to retrieve business tokens. **Allowable Values:**  1–36 chars |
| currency\_code string  Required | Three-digit ISO 4217 currency code. **Allowable Values:**  Valid three-digit [ISO 4217 currency code](https://www.iso.org/iso-4217-currency-codes.html) |
| fees array of objects  Optional | Contains attributes that define characteristics of one or more fees. This array is returned in the response when it is included in the request. **Allowable Values:**  One or more `fee` objects |
| fees\[].**memo** string  Optional | Additional text describing the fee. **Allowable Values:**  1–255 chars |
| fees\[].**overrideAmount** decimal  Optional | Dynamic fee amount that overrides the `fee.amount` field value. **Allowable Values:**  decimal **Format:** 0.00 |
| fees\[].**tags** string  Optional | Descriptive metadata about the fee. **Allowable Values:**  255 char max |
| fees\[].**token** string  Required | Unique identifier of the fee. **Allowable Values:**  1–36 chars |
| memo string  Optional | Memo or note describing the program transfer. **Allowable Values:**  1–99 chars |
| tags string  Optional | Comma-delimited list of tags describing the program transfer. **Allowable Values:**  1–255 chars |
| token string  Optional | Unique identifier of the program transfer. If you do not include a token, the system will generate one automatically. This token is necessary for use in other API calls, so we recommend that rather than let the system generate one, you use a simple string that is easy to remember. This value cannot be updated. **Allowable Values:**  1–36 chars |
| type\_token string  Required | Unique identifier of the program transfer type. Send a `GET` request to `/programtransfers/types` to retrieve program transfer type tokens. **Allowable Values:**  1–36 chars |
| user\_token string  Optional | Unique identifier of the user. Pass either a `user_token` or a `business_token`, not both. Send a `GET` request to `/users` to retrieve business tokens. **Allowable Values:**  1–36 chars |

## Sample request body

```json JSON lines wrap theme={null}
{
  "token": "my_program_transfer_01",
  "amount": 1,
  "tags": "tag1, tag2, tag3",
  "memo": "This is my program transfer",
  "type_token": "my_program_transfer_type_01",
  "user_token": "my_user_01",
  "currency_code": "USD"
}
```

## Response body

| Fields | Description |
| - | - |
| amount decimal  Returned | Amount of program transfer. **Allowable Values:**  decimal **Format:** 0.00 |
| business\_token string  Conditionally returned | Unique identifier of the business account holder. Returned if `user_token` is not specified. **Allowable Values:**  1–36 chars |
| created\_time datetime  Conditionally returned | Date and time when the program transfer object was created, in UTC. **Allowable Values:**  datetime **Format:** yyyy-MM-ddThh:mm:ssZ |
| currency\_code string  Returned | Three-digit ISO 4217 currency code. **Allowable Values:**  Valid three-digit [ISO 4217 currency code](https://www.iso.org/iso-4217-currency-codes.html) |
| fees array of objects  Conditionally returned | Contains attributes that define characteristics of one or more fees. **Allowable Values:**  Valid array of one or more `fees` objects |
| fees\[].**fee** object  Returned | Contains details about the fee. **Allowable Values:**  `amount`, `created_time`, `currency_code`, `last_modified_time`, `name`, `tags`, `token` |
| fees\[].fee.**amount** decimal  Returned | Amount of the fee. **Allowable Values:**  decimal **Format:** 0.00 |
| fees\[].fee.**created\_time** datetime  Returned | Date and time when the `fees` object was created, in UTC. **Allowable Values:**  datetime **Format:** yyyy-MM-ddThh:mm:ssZ |
| fees\[].fee.**currency\_code** string  Returned | Three-digit ISO 4217 currency code. **Allowable Values:**  Valid three-digit [ISO 4217 currency code](https://www.iso.org/iso-4217-currency-codes.html) |
| fees\[].fee.**last\_modified\_time** datetime  Returned | Date and time when the `fees` object was last modified, in UTC. **Allowable Values:**  datetime **Format:** yyyy-MM-ddThh:mm:ssZ |
| fees\[].fee.**name** string  Returned | Name of the fee. **Allowable Values:**  50 char max |
| fees\[].fee.**tags** string  Conditionally returned | Descriptive metadata about the fee. **Allowable Values:**  255 char max |
| fees\[].fee.**token** string  Returned | Unique identifier of the `fees` object. **Allowable Values:**  Existing `fees` object token |
| fees\[].**memo** string  Conditionally returned | Additional text describing the fee. **Allowable Values:**  1–255 chars |
| fees\[].**overrideAmount** decimal  Conditionally returned | Dynamic fee amount that overrides the `fee.amount` field value. **Allowable Values:**  decimal **Format:** 0.00 |
| fees\[].**tags** string  Conditionally returned | Descriptive metadata about the fee. **Allowable Values:**  255 char max |
| fees\[].**token** string  Returned | Unique identifier of the fee. **Allowable Values:**  1–36 chars |
| fees\[].**transaction\_token** string  Returned | Unique identifier of the fee transaction. **Allowable Values:**  36 char max |
| jit\_funding object  Conditionally returned | Contains information about the JIT Funding load event, in which funds are loaded into an account. This object is returned if your program uses JIT Funding. **Allowable Values:**  `acting_user_token`, `address_verification`, `amount`, `balances`, `business_token`, `decline_reason`, `incremental_authorization_jit_funding_tokens`, `memo`, `method`, `original_jit_funding_token`, `tags`, `token`, `user_token` |
| jit\_funding.**acting\_user\_token** string  Conditionally returned | User who conducted the transaction. Can be a child user configured to share its parent's account balance. **Allowable Values:**  36 char max |
| jit\_funding.**address\_verification** object  Conditionally returned | Contains address verification data used to make JIT Funding decisions. **Allowable Values:**  `gateway`, `issuer`, `request` |
| jit\_funding.address\_verification.**gateway** object  Conditionally returned | Contains address verification data consisting of address data entered by the cardholder, address data held by the Marqeta platform, and an assertion by the Marqeta platform as to whether the two sets of data match. **Allowable Values:**  `on_file`, `response` |
| jit\_funding.address\_verification.gateway.**on\_file** object  Conditionally returned | Contains address verification information. **Allowable Values:**  `postal_code`, `street_address`, `zip` |
| jit\_funding.address\_verification.gateway.on\_file.**postal\_code** string  Conditionally returned | Postal code of the address. **Allowable Values:**  10 char max |
| jit\_funding.address\_verification.gateway.on\_file.**street\_address** string  Conditionally returned | Street name and number of the address. **Allowable Values:**  40 char max |
| jit\_funding.address\_verification.gateway.on\_file.**zip** string  Conditionally returned | United States ZIP code of the address. **Allowable Values:**  10 char max |
| jit\_funding.address\_verification.gateway.**response** object  Conditionally returned | Response codes and memos for account name verification, address verification, card security verification, and transactions. **Allowable Values:**  `additional_information`, `code`, `memo` |
| jit\_funding.address\_verification.gateway.response.**additional\_information** string  Conditionally returned | Additional information about the transaction, such as velocity control details. This field is returned in transaction response objects only. It is not returned in address verification or card security verification response objects. **Allowable Values:**  255 char max |
| jit\_funding.address\_verification.gateway.response.**code** string  Returned | Four-digit response code for address verification, card security code verification, or transactions. For account name verification, the four digits correspond with assertions that the first, middle, last, and full name of the cardholder on the Marqeta platform match the data provided by the cardholder. - `0` indicates no validation was performed - `1` indicates the match was unsuccessful (not matched) - `2` indicates the match was partial - `3` indicates the match was exact For example: Code / First Name / Middle Name / Last Name / Full Name `0000` / Not validated / Not validated / Not validated / Not validated `1111` / Not matched / Not matched / Not matched / Not matched `3333` / Exact match / Exact match / Exact match / Exact match `1232` / Not matched / Partial match / Exact match / Partial match For address verification responses, the code is an assertion by the Marqeta platform as to whether its address verification data matches that provided by the cardholder: Code / Address / Postal Code `0000` / Match / Match `0001` / Match / Not matched `0100` / Not matched / Match `0101` / Not matched / Not matched `0200` / Data not present / Match `0201` / Data not present / Not matched `0002` / Match / Data not present `0102` / Not matched / Data not present `0303` / Not validated / Not validated For card security verification, the code indicates whether the verification check passed and can have these possible values: - `0000` – Passed - `0001` – Did not pass For a transaction, the code describes the outcome of the attempted transaction. For the full list of transaction codes, see [Transaction response codes](https://www.marqeta.com/docs/developer-guides/about-transactions.md#_transaction_response_codes). **Allowable Values:**  Four-digit code |
| jit\_funding.address\_verification.gateway.response.**memo** string  Returned | Additional text that describes the response. **Allowable Values:**  255 char max |
| jit\_funding.address\_verification.**issuer** object  Conditionally returned | Contains address verification data consisting of address data entered by the cardholder, address data held by the Marqeta platform, and an assertion by the Marqeta platform as to whether the two sets of data match. **Allowable Values:**  `on_file`, `response` |
| jit\_funding.address\_verification.issuer.**on\_file** object  Conditionally returned | Contains address verification information. **Allowable Values:**  `postal_code`, `street_address`, `zip` |
| jit\_funding.address\_verification.issuer.on\_file.**postal\_code** string  Conditionally returned | Postal code of the address. **Allowable Values:**  10 char max |
| jit\_funding.address\_verification.issuer.on\_file.**street\_address** string  Conditionally returned | Street name and number of the address. **Allowable Values:**  40 char max |
| jit\_funding.address\_verification.issuer.on\_file.**zip** string  Conditionally returned | United States ZIP code of the address. **Allowable Values:**  10 char max |
| jit\_funding.address\_verification.issuer.**response** object  Conditionally returned | Response codes and memos for account name verification, address verification, card security verification, and transactions. **Allowable Values:**  `additional_information`, `code`, `memo` |
| jit\_funding.address\_verification.issuer.response.**additional\_information** string  Conditionally returned | Additional information about the transaction, such as velocity control details. This field is returned in transaction response objects only. It is not returned in address verification or card security verification response objects. **Allowable Values:**  255 char max |
| jit\_funding.address\_verification.issuer.response.**code** string  Returned | Four-digit response code for address verification, card security code verification, or transactions. For account name verification, the four digits correspond with assertions that the first, middle, last, and full name of the cardholder on the Marqeta platform match the data provided by the cardholder. - `0` indicates no validation was performed - `1` indicates the match was unsuccessful (not matched) - `2` indicates the match was partial - `3` indicates the match was exact For example: Code / First Name / Middle Name / Last Name / Full Name `0000` / Not validated / Not validated / Not validated / Not validated `1111` / Not matched / Not matched / Not matched / Not matched `3333` / Exact match / Exact match / Exact match / Exact match `1232` / Not matched / Partial match / Exact match / Partial match For address verification responses, the code is an assertion by the Marqeta platform as to whether its address verification data matches that provided by the cardholder: Code / Address / Postal Code `0000` / Match / Match `0001` / Match / Not matched `0100` / Not matched / Match `0101` / Not matched / Not matched `0200` / Data not present / Match `0201` / Data not present / Not matched `0002` / Match / Data not present `0102` / Not matched / Data not present `0303` / Not validated / Not validated For card security verification, the code indicates whether the verification check passed and can have these possible values: - `0000` – Passed - `0001` – Did not pass For a transaction, the code describes the outcome of the attempted transaction. For the full list of transaction codes, see [Transaction response codes](https://www.marqeta.com/docs/developer-guides/about-transactions.md#_transaction_response_codes). **Allowable Values:**  Four-digit code |
| jit\_funding.address\_verification.issuer.response.**memo** string  Returned | Additional text that describes the response. **Allowable Values:**  255 char max |
| jit\_funding.address\_verification.**request** object  Conditionally returned | Contains address verification information. **Allowable Values:**  `postal_code`, `street_address`, `zip` |
| jit\_funding.address\_verification.request.**postal\_code** string  Conditionally returned | Postal code of the address. **Allowable Values:**  10 char max |
| jit\_funding.address\_verification.request.**street\_address** string  Conditionally returned | Street name and number of the address. **Allowable Values:**  40 char max |
| jit\_funding.address\_verification.request.**zip** string  Conditionally returned | United States ZIP code of the address. **Allowable Values:**  10 char max |
| jit\_funding.**jit\_account\_name\_verification** object  Conditionally returned | Contains account name verification data used to make JIT Funding decisions from one of the following objects: - The `gateway` object, which contains account name verification data from your JIT Funding gateway. - The `issuer` object, which contains account name verification data from the Marqeta platform. - The `request` object, which contains account name verification data as it appears in a JIT Funding request. **Allowable Values:**  `gateway`, `issuer`, `request` |
| jit\_funding.jit\_account\_name\_verification.**gateway** object  Conditionally returned | Contains account name verification data used to make JIT Funding decisions. **Allowable Values:**  `first_name`, `last_name`, `middle_name` |
| jit\_funding.jit\_account\_name\_verification.**issuer** object  Conditionally returned | Contains account name verification data used to make JIT Funding decisions. **Allowable Values:**  `first_name`, `last_name`, `middle_name` |
| jit\_funding.jit\_account\_name\_verification.**request** object  Conditionally returned | Contains account name verification data used to make JIT Funding decisions. **Allowable Values:**  `first_name`, `last_name`, `middle_name` |
| jit\_funding.**amount** decimal  Returned | Requested amount of funding. **Allowable Values:**  0 min **Format:** 0.00 |
| jit\_funding.**balances** object  Conditionally returned | Contains the GPA's balance details. **Allowable Values:**  `available_balance`, `balances`, `cached_balance`, `credit_balance`, `currency_code`, `impacted_amount`, `last_updated_time`, `ledger_balance`, `pending_credits` |
| jit\_funding.**business\_token** string  Conditionally returned | Holder of the business account that was funded. **Allowable Values:**  36 char max |
| jit\_funding.**decline\_reason** string  Conditionally returned | Reason why the transaction was declined. **Allowable Values:**  `AMOUNT_LIMIT_EXCEEDED`, `BLOCKED_BY_CARDHOLDER`, `BLOCKED_BY_ISSUER`, `BLOCKED_MERCHANT_BY_CARDHOLDER`, `CARD_NOT_ACTIVE`, `CARDHOLDER_NOT_ACTIVE`, `CLOSED_ACCOUNT`, `DUPLICATE_TRANSACTION`, `EXPIRED_CARD`, `INSUFFICIENT_FUNDS`, `INVALID_AMOUNT`, `INVALID_CARD`, `INVALID_MERCHANT`, `NO_CHECKING_ACCOUNT`, `NO_CREDIT_ACCOUNT`, `NO_SAVINGS_ACCOUNT`, `REVOCATION_ALL_AUTHORIZATION_ORDER`, `REVOCATION_AUTHORIZATION_ORDER`, `SOFT_DECLINE_AUTHENTICATION_REQUIRED`, `SOFT_DECLINE_PIN_REQUIRED`, `STOP_PAYMENT`, `SUSPECTED_FRAUD`, `TRANSACTION_COUNT_LIMIT_EXCEEDED`, `TRANSACTION_NOT_PERMITTED` |
| jit\_funding.**incremental\_authorization\_jit\_funding\_tokens** array of strings  Conditionally returned | Array of tokens referencing the JIT Funding tokens of all previous associated incremental authorization JIT Funding requests. Useful for ascertaining the final transaction amount when the original amount was incremented. **Allowable Values:**  Existing incremental authorization JIT Funding tokens |
| jit\_funding.**memo** string  Conditionally returned | Additional information that describes the JIT Funding transaction. **Allowable Values:**  99 char max |
| jit\_funding.**method** string  Returned | JIT Funding response type. See [The jit\_funding object](https://www.marqeta.com/docs/core-api/gateway-jit-funding-messages.md#_the_jit_funding_object) for the purpose, funding event type, and description of each method. **Allowable Values:**  `pgfs.adjustment.credit`, `pgfs.adjustment.debit`, `pgfs.authorization`, `pgfs.authorization.account_verification`, `pgfs.authorization.capture`, `pgfs.authorization.capture.chargeback`, `pgfs.authorization.capture.chargeback.reversal`, `pgfs.authorization.incremental`, `pgfs.authorization.reversal`, `pgfs.authorization.standin`, `pgfs.auth_plus_capture`, `pgfs.auth_plus_capture.standin`, `pgfs.balanceinquiry`, `pgfs.billpayment`, `pgfs.billpayment.capture`, `pgfs.billpayment.reversal`, `pgfs.directdeposit.credit`, `pgfs.directdeposit.credit.reversal`, `pgfs.directdeposit.debit`, `pgfs.directdeposit.debit.reversal`, `pgfs.dispute.credit`, `pgfs.dispute.debit`, `pgfs.force_capture`, `pgfs.network.load`, `pgfs.original.credit.authorization`, `pgfs.original.credit.auth_plus_capture`, `pgfs.pindebit.chargeback`, `pgfs.pindebit.chargeback.reversal`, `pgfs.product.inquiry`, `pgfs.refund`, `pgfs.refund.authorization`, `pgfs.refund.authorization.reversal` |
| jit\_funding.**original\_jit\_funding\_token** string  Conditionally returned | Unique identifier of the first associated JIT Funding message. Useful for correlating related JIT Funding messages (that is, those associated with the same GPA order). Not included in the first of any set of related messages. **Allowable Values:**  36 char max |
| jit\_funding.**tags** string  Conditionally returned | Customer-defined tags related to the JIT Funding transaction. **Allowable Values:**  255 char max |
| jit\_funding.**token** string  Returned | Existing JIT Funding token matching the `funding.gateway_log.transaction_id` field of the associated GPA order. **NOTE:** The `transaction_id` field updates if a subsequent JIT Funding message associated with that GPA order is sent. If multiple JIT Funding messages are associated with the same GPA order, the `transaction_id` field matches the token of the most recent message. **Allowable Values:**  36 char max |
| jit\_funding.**user\_token** string  Returned | Holder of the user account that was funded. **Allowable Values:**  36 char max |
| memo string  Conditionally returned | Additional description of the program transfer. **Allowable Values:**  1–99 chars |
| tags string  Conditionally returned | Comma-delimited list of tags describing the program transfer. **Allowable Values:**  1–255 chars |
| token string  Conditionally returned | Unique identifier of the program transfer. **Allowable Values:**  1–36 chars |
| transaction\_token string  Returned | Unique identifier of the transaction. **Allowable Values:**  Existing transaction token |
| type\_token string  Returned | Unique identifier of the program transfer type. **Allowable Values:**  1–36 chars |
| user\_token string  Conditionally returned | Unique identifier of the user account holder. Returned if `business_token` is not specified. **Allowable Values:**  1–36 chars |

## Sample response body

```json JSON lines wrap theme={null}
{
  "token": "my_program_transfer_01",
  "type_token": "my_program_transfer_type_01",
  "user_token": "my_user_01",
  "transaction_token": "169",
  "currency_code": "USD",
  "amount": 1,
  "memo": "This is my program transfer",
  "tags": "tag1, tag2, tag3",
  "created_time": "2023-03-11T20:58:30Z"
}
```


## Related topics

- [Create program transfer type](https://www.marqeta.com/docs/core-api/program-transfers/program-transfer-types/create-type.md)
- [Program Transfers Overview](https://www.marqeta.com/docs/core-api/program-transfers.md)
- [Program Transfer Types Overview](https://www.marqeta.com/docs/core-api/program-transfers/program-transfer-types.md)
- [Create ACH transfer](https://www.marqeta.com/docs/core-api/funding-via-ach/create-ach-transfer.md)
- [Create transfer](https://www.marqeta.com/docs/core-api/digital-banking-transfers/create-transfer.md)
