Request Body (JSON Parameter)

{
  "transaction_details": {
    "order_id": "ORDER-101",
    "gross_amount": 10000
  }
}
{
  "transaction_details": {
    "order_id": "ORDER-101",
    "gross_amount": 10000
  },
  "item_details": [{
    "id": "ITEM1",
    "price": 10000,
    "quantity": 1,
    "name": "Midtrans Bear",
    "brand": "Midtrans",
    "category": "Toys",
    "merchant_name": "Midtrans",
    "url": "http://toko/toko1?item=abc"
  }],
  "customer_details": {
    "first_name": "TEST",
    "last_name": "MIDTRANSER",
    "email": "[email protected]",
    "phone": "+628123456",
    "billing_address": {
      "first_name": "TEST",
      "last_name": "MIDTRANSER",
      "email": "[email protected]",
      "phone": "081 2233 44-55",
      "address": "Sudirman",
      "city": "Jakarta",
      "postal_code": "12190",
      "country_code": "IDN"
    },
    "shipping_address": {
      "first_name": "TEST",
      "last_name": "MIDTRANSER",
      "email": "[email protected]",
      "phone": "0 8128-75 7-9338",
      "address": "Sudirman",
      "city": "Jakarta",
      "postal_code": "12190",
      "country_code": "IDN"
    }
  },
  "enabled_payments": ["credit_card", "cimb_clicks",
    "bca_klikbca", "bca_klikpay", "bri_epay", "echannel", "permata_va",
    "bca_va", "bni_va", "bri_va","cimb_va", "other_va", "gopay", "indomaret",
    "danamon_online", "akulaku", "shopeepay", "kredivo", "uob_ezpay","other_qris" ],
  
  "credit_card": {
    "secure": true,
    "channel": "migs",
    "bank": "bca",
    "installment": {
      "required": false,
      "terms": {
        "bni": [3, 6, 12],
        "mandiri": [3, 6, 12],
        "cimb": [3],
        "bca": [3, 6, 12],
        "offline": [6, 12]
      }
    },
    "whitelist_bins": [
      "48111111",
      "41111111"
    ],
    "dynamic_descriptor": {
      "merchant_name" : "Fuji Apple Inc",
      "city_name": "Jakarta",
      "country_code": "ID"
    }
  },
  "bca_va": {
    "va_number": "12345678911",
    "sub_company_code": "00000",
    "free_text": {
      "inquiry": [
        {
          "en": "text in English",
          "id": "text in Bahasa Indonesia"
        }
      ],
      "payment": [
        {
          "en": "text in English",
          "id": "text in Bahasa Indonesia"
        }
      ]
    }
  },
  "bni_va": {
    "va_number": "12345678"
  },
  "bri_va": {
    "va_number": "1234567891234"
  },
  "cimb_va": {
    "va_number": "1234567891234567"
  },  
  "permata_va": {
    "va_number": "1234567890",
    "recipient_name": "SUDARSONO"
  },
  "shopeepay": {
    "callback_url": "http://shopeepay.com"
  },
  "gopay": {
    "enable_callback": true,
    "callback_url": "http://gopay.com"
  },
  "callbacks": {
    "finish": "https://demo.midtrans.com"
  },
  "uob_ezpay": {
    "callback_url": "http://uobezpay.com"
  }, 
  "expiry": {
    "start_time": "2018-12-13 18:11:08 +0700",
    "unit": "minutes",
    "duration": 1
  },
"page_expiry": {
    "duration": 3,
    "unit": "hours"
},
"recurring": {
    "required": true,
    "start_time": "2024-06-09 15:07:00 +0700",
    "interval_unit": "week"
},  
  "custom_field1": "custom field 1 content",
  "custom_field2": "custom field 2 content",
  "custom_field3": "custom field 3 content"
}
ParameterDescription
transaction_details
Transaction Details (required)
Specific information regarding the transaction
item_details
Array of Item Details (optional)
Shopping item details will be paid by customer

- Please avoid using vertical line (|) for Alfamart payment type
- item_details is required for Akulaku payment type.
- Akulaku payment type doesn't allow duplicate item ID (item_details.id) in one request.
customer_details
Customer Details (optional)
Specific information regarding the customer
enabled_payments
Array (optional)
List of payment types that should be enabled. If enabled_payments: field is not passed, all active payment types are included.
Card Payment:
credit_card.
VA:
echannel (Mandiri Bill Payment), permata_va, bca_va, bni_va, bri_va, cimb_va.
E-wallets:
gopay, and shopeepay.
Other QRIS:
other_qris
Over The Counter:
alfamart, and indomaret.
Cardless Credit/BNPL:
akulaku, and kredivo.

Aliasing refers to a list of payment types. Passing an alias is the equivalent of passing all the the payment types it refers to.
Supported aliases:
bank_transfer => e.g. permata_va, bca_va, bni_va
cstore => e.g. alfamart, indomaret.

If you want to use other_va, either permata_va or bni_va or bri_va because Midtrans handles other bank transfer as either Permata or BNI VA or BRI VA.
credit_card
CreditCard (optional)
Card Payment payment method
bca_va
BCA Virtual Account (optional)
BCA Virtual Account payment method
permata_va
Permata Virtual Account (optional)
Permata Virtual Account payment method
bni_va
BNI Virtual Account (optional)
BNI Virtual Account payment method
cimb_va
CIMB Virtual Account (optional)
CIMB Virtual Account payment method
bri_va
BRI Virtual Account (optional)
BRI Virtual Account payment method
other_va
Other Banks Virtual Account (optional)
Other Banks payment method. See Other Bank page for more details on how it works.
gopay
GoPay (optional)
GoPay e-wallet & GoPay QRIS payment methods.
shopeepay
ShopeePay (optional)
ShopeePay & ShopeePay QRIS payment methods.
callbacks
Callbacks (optional)
Redirect URL after transaction is successfully paid (can be overridden by JS callback). Can also be set via Snap Preference menu in your dashboard.
expiry
Expiry (optional)
Custom payment method expiry
page_expiry
Page Expiry (optional)
Customize Snap's page expiry
custom_field1
String(255) (optional)
Custom field 1 for custom parameter from merchant
custom_field2
String(255) (optional)
Custom field 2 for custom parameter from merchant
custom_field3
String(255) (optional)
Custom field 3 for custom parameter from merchant
recurring
Recurring (optional)
Recurring object to show a dedicated UI for Recurring payment flow using Subscription API. Use this only if your account is configured by Midtrans to accept recurring/subscription payment.

📘

Specifying payment methods via API using enabled_payments

Other than from Snap Preference settings in Dashboard, you can also specify which payment method to show in Snap via API using enabled_payments. This is useful if you want to maintain your own payment list; you can then bind each payment method list in your checkout page with individual Snap checkout page containing the specified payment method. See Supported Payment Channels page for more details on the param value for each payment channel.