---
updatedAt: 2026-06-30T16:05:21.000Z
agentTools:
  projectIndex: https://docs.pelcro.com/llms.txt
---

# Create offline charge

Create an offline charge (payment record) for a customer.

Creates an offline charge (payment record) for a customer. Used for checks, wire transfers, lockbox payments, cash, and other offline payment methods.

## Behavior

* If `invoice_id` is provided, the charge is linked to that invoice.
* If `invoice_id` is **not** provided, the charge amount is credited to the customer's balance.
* The customer's `currency` is updated to match the charge currency.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "core-api",
    "version": "1.88"
  },
  "servers": [
    {
      "url": "https://www.pelcro.com/api/v1/core"
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "x-bearer-format": "bearer"
      },
      "sec1": {
        "type": "apiKey",
        "in": "query",
        "name": "site_id"
      }
    }
  },
  "security": [
    {
      "sec0": [],
      "sec1": []
    }
  ],
  "paths": {
    "/charges": {
      "post": {
        "summary": "Create offline charge",
        "description": "Create an offline charge (payment record) for a customer.",
        "operationId": "api-core-create-offline-charge",
        "parameters": [
          {
            "name": "site_id",
            "in": "query",
            "description": "The unique identifier of the site associated with your account.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ***"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "amount",
                  "reference",
                  "currency"
                ],
                "properties": {
                  "customer_id": {
                    "type": "integer",
                    "description": "The customer ID to charge. Required if `customer_old_provider_id` is not provided.",
                    "format": "int32"
                  },
                  "customer_old_provider_id": {
                    "type": "string",
                    "description": "Alternative to `customer_id`. The old provider ID of the customer to charge."
                  },
                  "amount": {
                    "type": "integer",
                    "description": "The amount in cents to charge. Minimum 1, maximum 2147483647. If an `invoice_id` is provided and the invoice is paid, must match the invoice total.",
                    "format": "int32",
                    "minimum": 1,
                    "maximum": 2147483647
                  },
                  "reference": {
                    "type": "string",
                    "description": "Reference number for this charge (e.g. check number, wire reference, lockbox ID).",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "currency": {
                    "type": "string",
                    "description": "Three-letter ISO currency code (e.g. usd, cad). Must be valid for the account and customer.",
                    "minLength": 3,
                    "maxLength": 3
                  },
                  "payment_category": {
                    "type": "string",
                    "description": "Payment method category: 2 for check, 3 for wire, 4 for transfer, 5 for external, 6 for cash.",
                    "enum": [
                      "2",
                      "3",
                      "4",
                      "5",
                      "6"
                    ]
                  },
                  "invoice_id": {
                    "type": "integer",
                    "description": "The invoice ID to associate this charge with. Must exist on the account.",
                    "format": "int32"
                  },
                  "invoice_old_provider_id": {
                    "type": "string",
                    "description": "Alternative to `invoice_id`. The old provider ID of the invoice to associate this charge with."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n  \"data\": {\n    \"id\": 615,\n    \"invoice_id\": 2937,\n    \"amount\": 5000,\n    \"amount_refunded\": null,\n    \"description\": null,\n    \"paid\": true,\n    \"refunded\": null,\n    \"status\": \"succeeded\",\n    \"statement_descriptor\": null,\n    \"offline\": true,\n    \"reference\": \"CHK-12345\",\n    \"payment_category\": null,\n    \"offline_entered_by\": 2,\n    \"metadata\": [],\n    \"created_at\": 1660357832,\n    \"updated_at\": 1660357832,\n    \"deleted_at\": null\n  },\n  \"status\": \"success\"\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "example": 615,
                          "default": 0
                        },
                        "invoice_id": {
                          "type": "integer",
                          "example": 2937,
                          "default": 0
                        },
                        "amount": {
                          "type": "integer",
                          "example": 50,
                          "default": 0
                        },
                        "amount_refunded": {},
                        "description": {},
                        "paid": {
                          "type": "boolean",
                          "example": true,
                          "default": true
                        },
                        "refunded": {},
                        "status": {
                          "type": "string",
                          "example": "succeeded"
                        },
                        "statement_descriptor": {},
                        "offline": {
                          "type": "boolean",
                          "example": true,
                          "default": true
                        },
                        "payment_category": {},
                        "offline_entered_by": {
                          "type": "integer",
                          "example": 2,
                          "default": 0
                        },
                        "metadata": {
                          "type": "array"
                        },
                        "created_at": {
                          "type": "integer",
                          "example": 1660357832,
                          "default": 0,
                          "format": "int64"
                        },
                        "updated_at": {
                          "type": "integer",
                          "example": 1660357832,
                          "default": 0,
                          "format": "int64"
                        },
                        "deleted_at": {},
                        "reference": {
                          "type": "string",
                          "example": "CHK-12345"
                        }
                      }
                    },
                    "status": {
                      "type": "string",
                      "example": "success"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {}
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "error": "Unauthenticated."
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```

# Sibling pages

* [List charges](https://docs.pelcro.com/reference/api-core-list-charges.md)
* [Get charge](https://docs.pelcro.com/reference/api-core-get-charge.md)